我在界面构建器中有一个正常的Interace(其中包含UILabel
和UIButton
)。在代码中,我创建一个UIScrollView
,其中{未知}的数量为UILabels
(取决于用户)。这些标签在- (void)viewWillAppear
中创建,以确保数据是最新的。要删除标签,请在viewWillDisappear
我正在呼叫
for(UIView *subview in [scrollView subviews])
{
[subview removeFromSuperview];
}
问题是,在再次调用视图后,使用interfacebuilder创建的对象(UILabel
& UIButton
)消失。通过致电[subview removeFromSuperview];
来取消?如果是,如何再次添加它们?代码创建的所有内容仍然存在......
答案 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];
}
}