在以下代码中,如果我们执行[cell addSubview: someLabel]
vs [cell.contentView addSubview: someLabel]
,它们的工作方式似乎相同。做一个或另一个有什么不同吗? (实际代码中的自定义单元格正在添加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: ...]
答案 0 :(得分:10)
我相信如果我没错,contentView是UITableViewCell的子视图。
如果查看此页面here,您可以看到UITableViewCell中实际有3个子视图
我认为默认情况下,编辑控件是隐藏的,直到您进入表格的编辑模式,在这种情况下,编辑控件出现(每行左侧的减号按钮),您的contentView会调整大小并向右推。这可能是另一个答案提到的“适当的动画”效果。
要测试差异,请尝试向单元格而不是cell.contentView添加子视图(如带文本的UILabel)。当你将它添加到单元格而不是cell.contentView并且你进入你的表的编辑模式时,我相信你的UILabel不会调整大小,你会在减号按钮上方/下方看到编辑按钮。
答案 1 :(得分:2)
将视图放在contentView
中会影响编辑模式的正常动画。当你没有进行子类化时,将所有子视图放在contentView
中,除非你知道自己在做什么,否则这应该是大部分时间。