基本上我想删除作为该行一部分的按钮的点击事件的行 我不能使用提交编辑样式,因为我想使用相同的按钮执行取消订阅和删除
点击订阅按钮,我想删除该特定行
所以任何想法,我该怎么做。
答案 0 :(得分:3)
它适用于以下代码
按钮点击事件
CGPoint buttonPosition = [sender convertPoint:CGPointZero toView:self.table];
NSIndexPath *indexPath = [self.table indexPathForRowAtPoint:buttonPosition];
[self.arraylist removeObjectAtIndex:indexPath.row];
[self.table deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
答案 1 :(得分:2)
一个。将目标和回调添加到按钮(我猜你已经这样做了)
湾在回调函数中,遍历超级视图以找到UITableViewCell,然后找到它的索引,如下所示:
-(void)deleteButtonPressed:(UIButton*)button {
UIView* candidate = button;
while (![candidate isKindOfClass:[UITableViewCell class]]) {
candidate = candidate.superview;
}
NSIndexPath* indexPathToDelete = [self.tableView indexPathForCell:cell];
...
℃。首先更新您的模型(非常重要)
[self.dataArrayThatFeedsTableView removeObjectAtIndex:indexPathToDelete.item]
d。调用删除行
[self.tableView deleteItemsAtIndexPaths:@[indexPathToDelete]];
答案 2 :(得分:1)
当您在cellForRowAtIndexPath
中创建行时,将indexPath.row分配给按钮的标记,最好是添加一些数字以避免与其他人混淆,例如:
cell.deleteButton.tag = 100 + indexPath.row
单击按钮时,将发件人转到按钮,恢复按钮的标签(记得减去100),然后知道要删除哪一行。
答案 3 :(得分:0)
您可以获取单击按钮的位置以查找indexPath,然后从中找到具有该按钮的单元格:
var position: CGPoint = sender.locationInView(self.tableView)
var indexPath: NSIndexPath = self.tableView.indexPathForRowAtPoint(position)!
var cell = self.tableView(tableView, cellForRowAtIndexPath: indexPath)
答案 4 :(得分:0)
您应该获得已点按的按钮的indexPath
。然后使用标准API调用删除选定的索引路径。像这样:
- (IBAction) didTapSubscribeButton:(UIButton*)sender {
UIView* candidate = button;
while (![candidate isKindOfClass:[UITableViewCell class]]) {
candidate = candidate.superview;
}
NSIndexPath* indexPathToDelete = [self.tableView indexPathForCell:candidate];
[self.dataSourceArray removeObjectAtIndex:indexPath.row] //Considering that this is a single data source table view.
NSArray *indexPaths = [NSArray alloc]initWithObjects:@[indexPath],nil];
[self.tableView beginUpdates];
tableView deleteRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationFade];
[self.tableView endUpdates];
}
答案 5 :(得分:0)
使用像这样的自定义属性将UIButton的子类作为CellButton创建
@property (nonatomic,strong) NSIndexPath *indexPath;
将按钮的自定义类属性设置为新创建的属性,并在cellForRowAtIndexPath中设置
cell.btnSubscribe.indexPath=indexPath;
[cell.btnSubscribe addTarget:self action:@selector(subscribe:) forControlEvents:UIControlEventTouchUpInside];
现在在函数中
-(IBAction)subscribe:(id)sender{
CellButton *button=(CellButton *)sender;
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:button.indexPath] withRowAnimation:UITableViewRowAnimationFade];
}
尝试这个答案。我相信这会起作用
答案 6 :(得分:-1)
点击一行并删除它应该是这样的:
在didSelectRowAtIndexPath
中,您可以实施以下内容:
[myArrayWithSubscriptions removeObjectAtIndex:indexPath.row];
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
如果您只想点击要删除的UIButton,请在UIButton的操作中使用此代码。
CGPoint point;
NSIndexPath *indexPath;
point = [sender.center locationInView:tableView];
indexPath = [tableView indexPathForRowAtPoint:point];
[myArrayWithSubscriptions removeObjectAtIndex:indexPath.row];
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
通过这种方式,您可以从具有UIButton的单元格中获取indexPath,并且应该能够继续删除它。 我在旅途中输入此内容,稍后会检查此代码是否存在任何拼写错误。