16

在下面的代码中,如果我们使用 [cell addSubview: someLabel]vs [cell.contentView addSubview: someLabel],它们看起来是一样的。做一个或另一个有什么区别吗?(实际代码中的自定义单元格是添加UIImageViewUILabel)(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 回答