在具有许多其他视图的自定义 UITableViewCell 中为 UIButton 设置操作
Posted
技术标签:
【中文标题】在具有许多其他视图的自定义 UITableViewCell 中为 UIButton 设置操作【英文标题】:set action for UIButton in customized UITableViewCell which has many other views 【发布时间】:2016-06-24 06:04:06 【问题描述】:我阅读了以下帖子:
How to set Action for UIButton in UITableViewCell
Add an action to a custom UITableViewCell
但是所有的解决方案都不适合我。我不确定我错过了什么;
我有一个定制的UITableViewCell
,它存在于一个xib文件中,这个单元格包含一个UIImageView
,UILabel
,一个UIButton
。我希望当用户单击 UIButton 时,它会从列表中删除当前项目,当用户选择行时,它将导航到另一个页面。
我做了什么:根据上面提出的问题,我创建了一个UIButton
和addTarget,然后将按钮添加到带有[cell.contentview addsubview:button]
的单元格中,可以触发按钮操作。
还有一些其他的视图,我希望在xib中布局,然后不需要用代码布局。
所以我在xib中创建了一个按钮,并为此按钮调用setTarget(我自定义的单元格类中的outlet),无法触发按钮动作。
然后我在xib中添加一个UIview
作为占位符,并用代码创建一个新按钮并将按钮添加到占位符UIview
中,无法触发按钮动作。
所以看来让它工作的方法必须是:
用代码创建一个按钮;
添加目标,然后将此按钮直接添加到单元格的内容视图中;
这似乎很烦人,因为我不想用代码来布局视图。我错过了什么吗?
【问题讨论】:
【参考方案1】:首先在xib
文件的UITableViewCell
的contentView
中添加一个按钮,并在customCell
中创建插座。之后像这样更改cellForRowAtIndex
的代码。
[cell.btn addTarget:self action:@selector(btnTap:) forControlEvents:UIControlEventTouchUpInside];
然后创建这个btnTap
方法
- (void)btnTap:(UIButton*)sender
CustomCell *cell = (CustomCell*) [[sender superview] superview]; //If you have button inside another view you need to add superView on your hierarchy basis.
NSIndexPath *indexPath = [self.tblFile indexPathForCell:cell];
NSLog(@"Row you want to delete - %d",indexPath.row);
希望这会对你有所帮助。
【讨论】:
以上是关于在具有许多其他视图的自定义 UITableViewCell 中为 UIButton 设置操作的主要内容,如果未能解决你的问题,请参考以下文章
实现 UITableView (Slave) 的动态高度,它作为子视图添加到另一个具有动态高度的 UITableView (Master) 的自定义单元格中
如何在带有标题视图和 UITableview 的自定义视图中正确设置 UISearchbar 的动画?