在UITableView中删除行的UIButton事件
问题描述:
我在UITableView单元格中添加按钮。我的代码是在UITableView中删除行的UIButton事件
UIButton *btnView = [[UIButton buttonWithType:UIButtonTypeContactAdd] retain];
btnView.frame = CGRectMake(280.0, 8.0, 25.0, 25.0);
//[btnView setImage:[UIImage imageNamed:@"invite.png"] forState:UIControlStateNormal];
[btnView addTarget:self action:@selector(action:) forControlEvents:UIControlEventTouchUpInside];
[cell.contentView addSubview:btnView];
[btnView release];
我的按钮操作是
- (void)action:(id)sender
{
}
我想知道,如何让当前的表行索引时点击。我想在点击按钮时删除表格行。
编辑:: 我发现了一种与动画删除
[listOfItems removeObjectAtIndex:indexPath.row];
[self.tableview deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationRight];
答
我相信一个方法是存储的行数在按钮标签
btnView.tag = [indexPath row]
在行动
- (void)action:(id)sender
{
UIButton * btn = (UIButton)sender;
int row = btn.tag;
}
+0
我使用int row = [sender tag]; – saturngod 2010-10-05 02:15:38
答
我通常使用这种方法:
- (IBAction)buttonAction:(id)sender {
UIButton *button = sender;
UIView *contentView = [button superview];
UITableViewCell *cell = (UITableViewCell *)[contentView superview];
NSIndexPath *indexPath = [tableView indexPathForCell:cell];
//Do something
}
根据您的UITableViewCell的布局,您可能需要更深入地浏览TableViewCell视图。
答
http://nshipster.com/associated-objects/使用NSNumber的周围行或索引路径本身的关联对象的关联对象
//when you create the button
objc_setAssociatedObject(button, associationKeyForButton, [NSNumber numberWithInteger:indexPath.row], OBJC_ASSOCIATION_RETAIN_NONATOMIC);
//in the touch up inside handler to get the row back.
NSNumber* rowNumber = objc_getAssociatedObject(sender, associationKeyForButton);
代码说“UIButtonTypeContactAdd”,不能删除,所以它是有点混乱。 – 2010-10-04 03:48:09
添加时,它将从当前的uitableview中移除并添加到另一个UITableView中。 – saturngod 2010-10-04 04:08:06