如何在UITableViewCell
上添加自定义按钮,然后使用该按钮删除单元格而不使用Interface Builder和Custom Cell?
答案 0 :(得分:8)
如果你真的想添加自定义按钮而不进行子类化,只需将按钮添加到单元格的contentView中:
[cell.contentView addSubview:customButton];
您可以设置按钮的所有特征:框架,目标,选择器等...然后广告使用上述调用将其添加到单元格中。
UIButton *customButton = [UIButton buttonWithType:UIButtonTypeCustom];
customButton.frame=//whatever
[customButton setImage:anImage forState:UIControlStateNormal];
[customButton setImage:anotherImage forState:UIControlStateHighlighted];
[customButton addTarget:self action:@selector(delete) forControlEvents: UIControlEventTouchUpInside];
//yadda, yadda, .....
你也可以标记它
customButton.tag = 99999;
所以你以后可以找到它:
UIButton *abutton = (UIButton*) [cell.contentView viewWithTag:99999];
您需要决定何时添加按钮,可能是在单元格选择上,也可能是在编辑模式下...只需将代码放入您选择的委托方法中。
答案 1 :(得分:1)
如果按钮的唯一目的是提供删除,您应该查看UITableViewDataSource
,其中有一个名为- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
的方法。像这样实现它:
- (BOOL)tableView:(UITableView *)tableView
canEditRowAtIndexPath:(NSIndexPath *)indexPath
{
return YES;
}
然后实施:
- (void)tableView:(UITableView *)tableView
commitEditingStyle:(UITableViewCellEditingStyle)editingStyle
forRowAtIndexPath:(NSIndexPath *)indexPath
{
// Database removal code goes here...
}
要使用这些方法,请让UITableViewController
通过执行以下操作来实施UITableViewDataSource
协议:
MyClass : UITableViewController <UITableViewDataSource>
在头文件中,并务必记住将viewController的数据源设置为self
。