what I am doing
我正在制作一个我正在使用tableView的项目。在那个tableView中我每行都有一个删除按钮..
what I want
我想要当我按下按钮时......延迟1秒。然后该行应该被删除..在延迟时间,我按下的行的删除按钮应该隐藏。
My Problem
我能做到这一点但是有一个问题。当我按任意行的删除按钮时...只有最后一行的删除按钮隐藏...
Root of the problem -According to my view
好吧,我在cellForRowAtIndexPath中分配了删除按钮。
我已经为它分配了方法...当我按下按钮时...方法被调用..在那个方法我已经隐藏了删除按钮......
我的意思是如何知道删除按钮的哪一行应隐藏...
My Question
当我按下删除按钮时,如何知道哪一行应该隐藏..现在它每次只在最后一行隐藏..
建议请......
答案 0 :(得分:1)
在tableView:cellForRowAtIndexPath
方法中使用以下内容。
[myButton addTarget:self
action:@selector(ButtonAction:)
forControlEvents:UIControlEventTouchUpInside];
myButton.tag = indexPath.row ;
实施以下方法,
-(void) ButtonAction:(id) sender
{
UIButton* myButton = (UIButton*)sender;
myButton.hidden = YES;
//Delete the row at index (myButton.tag)
}
我建议您使用自定义单元格,而不是直接使用UITableViewCell。
答案 1 :(得分:0)
您可以尝试为每个删除按钮设置标记作为行号,然后在按钮单击方法中访问标记以了解单击了哪个按钮。
答案 2 :(得分:0)
这是另一个不依赖于标签的选项:
-(void)buttonAction:(id)sender
{
UIButton *button = (UIButton*)sender;
UITableViewCell *cell = [[button superview] superview];
[button setHidden:YES];
[self.tableView performSelector:@selector(deleteCell:) withObject:cell afterDelay:0.5]
-(void)deleteCell:(UITableViewCell*)cell
{
[self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:cell] withRowAnimation:UITableViewRowAnimation{YourChoiceHere}
}
答案 3 :(得分:0)
试试这个:首先为cellForRowAtIndexPath函数中的每个单元格设置一个唯一标记:
[cell setTag:10000+[[userInfo objectForKey:@"id"] intValue]];
在病房之后,删除使用这样的功能:
-(void)deleteRow:(id)sender{
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:[sender tag] inSection:0];
[YOURTABLEVIEW deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:0];
}
希望这能解决您的问题。
答案 4 :(得分:0)
要知道行号,你可以通过indexpath.row获取它。