我正在创建一个基于表格视图的iPhone应用程序,我需要逐个禁用整个表格视图单元格。
要求就像 -
案例1: -
最初只有第一个表格单元格行应该是用户交互启用,其余应该是禁用。我们可以轻松地在CellForRowAtIndexPath方法中启用indexPath.row 0。
案例2: -
如果用户点击第一个单元格,那么他将再次返回,然后第一个单元格将被禁用,第二个单元格应该启用(其余表格单元格将在第二个单元格之后被禁用)。
案例3: -
再次,如果用户将点击第二个表格单元格并返回此表格,那么除了第三个单元格之外,其他人应该禁用等等...
这意味着我需要按顺序逐个禁用所有表格单元格。通过设置索引可以实现,但这不是正确的方法。所以,你能告诉我我需要给予什么条件吗?请建议我继续进行。
感谢。
答案 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>