在iOS上,将子视图添加到UITableViewCell对象“cell”与“cell.contentView”之间有什么区别?

时间:2012-08-23 02:48:53

标签: ios uitableview

在以下代码中,如果我们执行[cell addSubview: someLabel] vs [cell.contentView addSubview: someLabel],它们的工作方式似乎相同。做一个或另一个有什么不同吗? (实际代码中的自定义单元格正在添加UIImageViewUILabel)(UIView,另一方面,没有contentView,因此我们不需要将子视图添加到其contentViewUITableViewCell顺便提一下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: ...]

2 个答案:

答案 0 :(得分:10)

我相信如果我没错,contentView是UITableViewCell的子视图。

如果查看此页面here,您可以看到UITableViewCell中实际有3个子视图

我认为默认情况下,编辑控件是隐藏的,直到您进入表格的编辑模式,在这种情况下,编辑控件出现(每行左侧的减号按钮),您的contentView会调整大小并向右推。这可能是另一个答案提到的“适当的动画”效果。

要测试差异,请尝试向单元格而不是cell.contentView添加子视图(如带文本的UILabel)。当你将它添加到单元格而不是cell.contentView并且你进入你的表的编辑模式时,我相信你的UILabel不会调整大小,你会在减号按钮上方/下方看到编辑按钮。

答案 1 :(得分:2)

将视图放在contentView中会影响编辑模式的正常动画。当你没有进行子类化时,将所有子视图放在contentView中,除非你知道自己在做什么,否则这应该是大部分时间。