4

「TaskTable」という名前のUITableViewがあり、このメソッドのTaskTableの各セルのコンテンツビューにラベルを追加しています

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 

私のラベルタグは50で、カスタムセルではなくテーブルビューのビルドセルで使用しています。

このコードを使用してタスクテーブルからラベルを削除しようとすると、次のようになります。

for(UILabel *lbl in [cell subviews])
    {
       if(lbl.tag == 50)
        {
          [lbl removeFromSuperview];
        }

   }

コードはこのif条件を入力していません。なぜラベルが見つからないのですか?これは、独自のテキストラベルのみを検出する組み込みセルを使用しているためですか、それとも他に欠落している問題があるためですか?

4

1 に答える 1

8

セルのコンテンツ ビューに追加すると言いました。ただし、上記のコードはセル自体のサブビューを通過しています。これは 1 レベルの深さしかないため、コンテンツ ビューは返されますが、コンテンツ ビューのサブビューは返されません。

for(UILabel *lbl in [cell.contentView subviews]) 
    { 
       if(lbl.tag == 50) 
        { 
          [lbl removeFromSuperview]; 
        } 

   }

動作するはずですが、実際にはプロパティとしてラベルを持つカスタム セル サブクラスの方が優れています。

于 2012-05-14T11:48:44.967 に答える