删除子视图

时间:2012-01-08 10:15:36

标签: iphone release subview

我在这里看了几个例子,但没有任何作用,所以这里... 我有一个子视图,它启动并正常工作,相机拍摄照片,然后右下角出现一个缩略图,点击时我想发布子视图,但无论我如何尝试我都无法摆脱子视图!< / p>

代码:

    -(void)onSingleTap:(UITouch*)touch {
NSLog(@"onSingleTap");
    UIImageView *eyes = [[[UIImageView alloc] initWithImage:[UIImage     imageNamed:@"binocs.png"]] autorelease];
eyes.tag = EYES_TAG;
    [self.overlayView addSubview:eyes];
    [camera takePicture];
    }

然后是缩略图动作:

    - (void)thumbnailTapped:(id)sender {
    self.view.alpha = 99.0f;    
    UIButton *binocsButton = (UIButton*)[self.view viewWithTag:BINOCS_BUTTON_TAG];
binocsButton.hidden = YES;

    }

所以我的subView被称为眼睛,我只需要在缩略图轻拍动作下清除该视图。任何想法都会很棒!

1 个答案:

答案 0 :(得分:1)

我不确定我是完全关注的,但是你不想只将它添加到thumbnailTapped:的底部:

[[self.view viewWithTag:EYES_TAG] removeFromSuperview];

顺便说一句,不是使用标签,最好是存储对要作为视图控制器类的ivar访问的视图的引用。我会将此添加到您的属性定义中:

@property (nonatomic, retain) UIImageView *eyes;
@property (nonatomic, retain) UIButton *binocsButton;

然后合成它们,当您创建这些对象时,指定属性,然后您可以稍后更轻松地访问它们。使用过去发现的标签会让人非常恼火,就好像视图位于复杂视图层次结构的底部,您无法轻松访问它。如果您这样做,请记住也在dealloc中释放它们(除非您使用ARC)。