TableView问题......如何知道行号

时间:2011-03-22 07:14:04

标签: iphone ios uitableview

what I am doing

我正在制作一个我正在使用tableView的项目。在那个tableView中我每行都有一个删除按钮..

what I want

我想要当我按下按钮时......延迟1秒。然后该行应该被删除..在延迟时间,我按下的行的删除按钮应该隐藏。

My Problem

我能做到这一点但是有一个问题。当我按任意行的删除按钮时...只有最后一行的删除按钮隐藏...

Root of the problem -According to my view
好吧,我在cellForRowAtIndexPath中分配了删除按钮。 我已经为它分配了方法...当我按下按钮时...方法被调用..在那个方法我已经隐藏了删除按钮......

我的意思是如何知道删除按钮的哪一行应隐藏...

My Question
当我按下删除按钮时,如何知道哪一行应该隐藏..现在它每次只在最后一行隐藏..

建议请......

5 个答案:

答案 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获取它。