如何逐个禁用UITableViewCell选择?

时间:2013-10-14 13:12:24

标签: iphone ios uitableview

我正在创建一个基于表格视图的iPhone应用程序,我需要逐个禁用整个表格视图单元格。

要求就像 -

案例1: -

最初只有第一个表格单元格行应该是用户交互启用,其余应该是禁用。我们可以轻松地在CellForRowAtIndexPath方法中启用indexPath.row 0。

案例2: -

如果用户点击第一个单元格,那么他将再次返回,然后第一个单元格将被禁用,第二个单元格应该启用(其余表格单元格将在第二个单元格之后被禁用)。

案例3: -

再次,如果用户将点击第二个表格单元格并返回此表格,那么除了第三个单元格之外,其他人应该禁用等等...

这意味着我需要按顺序逐个禁用所有表格单元格。通过设置索引可以实现,但这不是正确的方法。所以,你能告诉我我需要给予什么条件吗?请建议我继续进行。

感谢。

2 个答案:

答案 0 :(得分:1)

只需维护一个实例变量,该变量包含应该启用的单元格编号。 enabledCell。

将enabledCell初始化为0.在didSelectRow中增加enabledCell并重新加载tableView。在indexPath中的行的单元格中,仅当indexPath与enabledCell值相同时才启用单元格。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    // write code to dequeue or create new UITableViewCell here
    // then check if index is same as the cell that should be enabled
    if(index.Path.row == enabledCell)
       cell.userInteractionEnabled = NO;
    else
       cell.userInteractionEnabled = YES;
    return cell;
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    //Assuming you have number of rows stored in variable numberOfRows
     enabledCell++;
     if(enabledCell == numberOfRows)
       enabledCell = 0;
    [tableView reloadData];
}

答案 1 :(得分:0)

有很多方法可以做到这一点(从现在开始,我假设一个带有n行的线性表视图,只有一个部分)。

例如,您可以向单元格模型对象添加BOOL enabled属性。在控制器的didSelectRowAtIndexPath:中检查该属性,如果设置为NO则不执行任何操作。如果它设置为YES,则导航到相应的页面,并将enabled属性与索引位置i + 1(或位置0,如果它是最后一个条目并且您想循环)交换。 / p>