0

我在界面生成器中有一个正常的交互(有 aUILabel和 a UIButton)。在代码中,我创建了UIScrollView一个(未知)数量的UILabels(取决于用户)。创建这些标签是- (void)viewWillAppear为了确保数据是最新的。要删除标签,在viewWillDisappear我打电话

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

问题是,再次调用视图后,使用 interfacebuilder (UILabel& UIButton)创建的对象消失了。是否通过调用删除[subview removeFromSuperview];?如果是,如何再次添加它们?代码创造的一切都还在……</p>

4

3 回答 3

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];
   }
}
于 2012-09-12T10:56:59.640 回答
0

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

于 2012-09-12T10:52:04.037 回答
0

UILabel、UIButton 和 UITextfields 基本上是 UIView 的子类。因此,如果您删除滚动视图下的所有 UIView,它也会将它们删除。

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];
    }
}
于 2012-09-12T12:51:44.983 回答