0

インターフェイス ビルダーに通常の Interace があります ( 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

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 に答える
0

すべてのサブビューを削除しないでください。で追加したラベルのみを削除しますviewWillAppear

于 2012-09-12T10:52:04.037 に答える