调用removeFromSuperview后,“interfacebuilded”对象消失了吗?

时间:2012-09-12 10:50:11

标签: iphone objective-c xcode

我在界面构建器中有一个正常的Interace(其中包含UILabelUIButton)。在代码中,我创建一个UIScrollView,其中{未知}的数量为UILabels(取决于用户)。这些标签在- (void)viewWillAppear中创建,以确保数据是最新的。要删除标签,请在viewWillDisappear我正在呼叫

for(UIView *subview in [scrollView  subviews])
{
    [subview removeFromSuperview];
}

问题是,在再次调用视图后,使用interfacebuilder创建的对象(UILabel& UIButton)消失。通过致电[subview removeFromSuperview];来取消?如果是,如何再次添加它们?代码创建的所有内容仍然存在......

3 个答案:

答案 0 :(得分:2)

您应该为动态添加的标签添加标记。

for(int i = 0; i < n; i++){
  UILabel *label = [UILabel alloc...];
  label.tag = 999999;
}

然后

for(UIView *subview in [scrollView  subviews])
{
   if([subview isKindOfClass:[UILabel class]] && subview.tag == 999999){
    [subview removeFromSuperview];
   }
}

答案 1 :(得分:0)

请勿删除所有子视图。仅删除您在viewWillAppear中添加的标签。

答案 2 :(得分:0)

UILabel,UIButton和UITextfields基本上是UIView的子类。 因此,如果你删除了scrollview下的所有UIViews,它也会删除它们。

for (UIView *myView in [scrollView  subviews]) {
    if([myView isKindOfClass:[UILabel class]]){
        [myView removeFromSuperview];
    }
    if([myView isKindOfClass:[UIButton class]]){
        [myView removeFromSuperview];
    }
    if([myView isKindOfClass:[UITextField class]]){
        [myView removeFromSuperview];
    }
}