TableView的问题…如何知道行号
what I am doing
我正在做一个项目,我正在使用一个tableView。 在该tableView我有一个删除button在每一行..
what I want
我想要的是,当我按下button…有1秒的延迟。 之后该行应该被删除。在这个延迟时间里,我按下的那一行的删除button应该是隐藏的。
My Problem
那么我能够做到这一点,但有一个问题。 当我按任何行的删除button…只有最后一行的删除button隐藏…
Root of the problem -According to my view
那么我已经分配cellForRowAtIndexPath ..中的删除button,我已经分配了它的方法…当我按下button…该方法被调用..在该方法中,我已经隐藏了删除button…
我的意思是如何知道在哪个行删除button应该隐藏…
My Question
当我按删除button如何知道应该隐藏哪一行。现在它每一次隐藏在最后一行..
build议请…
在你的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) }
我build议你使用自定义单元格,而不是直接使用UITableViewCell。
您可以试着将每个删除button的标签设置为行号,然后在button单击方法中访问该标签,以了解哪个button被点击。
这是另一个不依赖于标签的选项:
-(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} }
试试这个:首先为cellForRowAtIndexPath函数中的每个单元设置一个唯一的标签:
[cell setTag:10000+[[userInfo objectForKey:@"id"] intValue]];
病房后,为删除使用function如下:
-(void)deleteRow:(id)sender{ NSIndexPath *indexPath = [NSIndexPath indexPathForRow:[sender tag] inSection:0]; [YOURTABLEVIEW deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:0];
}
希望这会解决你的问题。
要知道行号,你可以通过indexpath.row得到它