[cell addSubview:button] 和 [cell.contentview addsubview:button] 有啥不同

Posted

技术标签:

【中文标题】[cell addSubview:button] 和 [cell.contentview addsubview:button] 有啥不同【英文标题】:what is diffrent between [cell addSubview:button] and [cell.contentview addsubview:button][cell addSubview:button] 和 [cell.contentview addsubview:button] 有什么不同 【发布时间】:2015-12-13 07:45:56 【问题描述】:

我在 tableviewcell 中有按钮。 [cell addSubview:button][cell.contentview addsubview:button] 之间有什么不同? 因为当我在 tableview 中使用 [cell addSubview:button] 时,按钮功能工作正常,但我在 table view 中的界面搞砸了,在我滚动视图并返回 tableview 后按钮转到左侧单元格。 另一方面,当我使用[cell.contentview addsubview:button] 按钮功能不起作用并且没有保存到 myarray 时。

按钮代码:

UIButton *button=(UIButton *) [cell viewWithTag:103];//fav
[button setImage:[UIImage imageNamed:@"unfav.png"] forState:UIControlStateNormal];
[button setImage:[UIImage imageNamed:@"fav.png"] forState:UIControlStateSelected];
 button.frame = CGRectMake(0,0, 50, 50);

button.tag = indexPath.row;
[button addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];
[cell addSubview:button]; // add the button to the cell
[cell bringSubviewToFront:button];

【问题讨论】:

显然不同之处在于您要添加子视图的视图。 【参考方案1】:

contentView 是添加了所有subviews 的单元格的默认视图。cell.view 是添加了contentView 本身的主视图,并且cell.contentView 覆盖了整个区域的cell.view。但在您的情况下,当您将按钮添加到 cell.view 时。

来自苹果文档关于ContentView

UITableViewCell 对象的内容视图是单元格显示内容的默认SuperView。如果您想通过简单地添加其他视图来自定义单元格,则应将它们添加到内容视图中,以便在单元格进入和退出编辑模式时适当地定位它们。

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITableViewCell_Class/#//apple_ref/occ/instp/UITableViewCell/contentView

【讨论】:

以上是关于[cell addSubview:button] 和 [cell.contentview addsubview:button] 有啥不同的主要内容,如果未能解决你的问题,请参考以下文章

无法识别的选择器发送到类

SnapKit 中的两个视图可以互相使用吗?

三种cell的自定义的方法

java中,如何动态生成HSSFCell cell0= row.createCell(..)中的cell0,cell1,cell2,cell3........

vba里面 cell和cells sheet和sheets有啥区别

vba里面 cell和cells sheet和sheets有啥区别