16

次のコードで [cell addSubview: someLabel]vsを実行[cell.contentView addSubview: someLabel]すると、同じように動作するように見えます。どちらかを行う違いはありますか?(実際のコードのカスタム セルは and を追加UIImageViewしていますUILabel) (UIView一方、 には がないcontentViewため、その にサブビューを追加する必要はありませんcontentView。 ちなみにUITableViewCellは のサブクラスですUIView)

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

    UITableViewCell *cell = nil;

    if ([tableView isEqual:self.songsTableView]){

        static NSString *TableViewCellIdentifier = @"MyCells";

        cell = [tableView dequeueReusableCellWithIdentifier:TableViewCellIdentifier];

        if (cell == nil){
            cell = [[UITableViewCell alloc] 
                    initWithStyle:UITableViewCellStyleDefault
                    reuseIdentifier:TableViewCellIdentifier];
        }

        // ...  some code to create a UILabel (not shown here)

        [cell addSubview: someLabel];  // vs using [cell.contentView addSubView: ...]
4

2 に答える 2

15

私が間違っていなければ、contentView は UITableViewCell のサブビューだと思います。

このページをここで見ると、UITableViewCell に実際に 3 つのサブビューがあることがわかります。

デフォルトでは、テーブルの編集モードに入るまで編集コントロールは非表示になっていると思います。その場合、編集コントロールが表示され(各行の左のマイナスボタン)、contentView がサイズ変更されて右にプッシュされます。これはおそらく、他の回答で言及されている「適切なアニメーション」効果を与えるものです。

違いをテストするには、テキスト付きの UILabel などのサブビューを cell.contentView ではなくセルに追加してみてください。cell.contentView ではなくセルに追加してテーブルの編集モードに入ると、UILabel のサイズが変更されず、マイナス記号ボタンの上/下に編集ボタンが表示されます。

于 2012-08-23T04:02:29.077 に答える
3

ビューcontentViewを適切なアニメーションに配置すると、編集モードのオン/オフが影響します。サブクラス化していないときは、すべてのサブビューを配置しcontentViewます。これは、自分が何をしているのかわからない限り、常にそうする必要があります。

于 2012-08-23T03:08:39.920 に答える