0

我有一个UITableView我正在使用 custom 创建的UITableViewCell。表格视图显示了从数组填充的一些数据。现在我使用 2 个图像根据选择突出/取消突出显示。[默认情况下,当应用程序打开时,我显示第一行突出显示的图像而没有任何选择]。

UITableView如果我第一次成功按下删除按钮,标题现在包含一个删除按钮。

-(IBAction)delete{
    [myArray removeObjectAtIndex:0];
    [tableview reloadData];
}

现在随着 tableview 的刷新,所有行都包含未突出显示的图像。现在,当我选择第 3 行并按标题删除按钮时,我应该如何删除要删除的索引号。

我知道didSelectRowAtIndexPath但有什么方法可以在 IBAction 方法中获取选定的单元格索引号?

4

3 回答 3

0

只需创建一个保存最新选择值的 ivar 或属性。在 didSelectRowAtIndexPath 方法中,有这一行:

self.rowSelected = indexPath.row;

其中 rowSelected 是一个属性。然后在按钮的 IBAction 中,您可以访问该属性:

-(IBAction)delete{
    if (self.rowSelected != -1){
        [myArray removeObjectAtIndex:self.rowSelected];
        [tableview reloadData];
        self.rowSelected = -1;
}

在 viewDidLoad 方法中,您应该将该属性的值设置为 0,因为您希望在启动时选择第一行。

于 2012-12-15T18:09:19.753 回答
0

在您的 .h 文件中获取一个实例变量NSInteger selectedRow

在 you initorviewDidLoad中,设置默认选择...

selectedRow=0;

然后在didSelectRowAtIndexPath执行以下操作...

-(void)tableView:(UITableView)tableView didSelectRowAtIndexPath:(NSIndexPath)indexPath
{
    selectedRow=indexPath.row;
}

对删除方法进行细微更改

-(IBAction)delete{
    if(selectedRow!=-1)
    {
       [myArray removeObjectAtIndex:selcetedRow];
       [tableview reloadData];
       selectedRow=-1;     //-1 to mark that no row has been selected now
    }
}

你完成了!

于 2012-12-15T18:14:46.387 回答
0

您可以使用indexPathForSelectedRow来确定当前选择了哪一行。将删除方法更改为:

-(IBAction)delete {
    NSIndexPath *selectedRow = [tableview indexPathForSelectedRow];
    if (selectedRow) {
        [myArray removeObjectAtIndex:selectedRow.row];
        [tableview reloadData];
    }
}

请注意,您必须默认选择第一行:

[tableview selectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] animated:NO scrollPosition:UITableViewScrollPositionTop];
于 2012-12-15T19:24:38.203 回答