我是iOS的新手,我遇到了有关选择单元格风格的问题。用户无法直接点击第3行,他应该选择第1行,然后选择第2行和第3行。有可能??
我试试这段代码
tableView.userInteractionEnabled = NO;
但是使用这段代码我无法选择任何单元格。我有一个来自Web服务的动态数组。在此先感谢!
答案 0 :(得分:1)
您应保存最后一个indexPath.row
以比较当前选定的行。下面的代码强制用户按顺序选择行:用户必须选择第0行 - >第1行 - >第2行。
NSIndexPath *_lastIndexPath = [NSIndexPath indexPathForRow:0 inSection:0];
NSMutableArray *_selectedIndexPaths = [[NSMutableArray alloc] init];
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
if ([_selectedIndexPaths containsObject:indexPath]) {
// Set the color for selected cell
}
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
if (_lastIndexPath.row + 1 >= indexPath.row) {
// Implement what you want
} else {
// You should show the introduction of order operation for user
_lastIndexPath = indexPath;
}
if (![_selectedIndexPaths containsObject:indexPath]) { // Check if array does not contain selecting cell, add this cell to array
[_selectedIndexPaths addObject:indexPath];
[tableView reloadData];
}
}
答案 1 :(得分:1)
选择NSMutableArray
NSMutableArray *arr_selected_indexs = [NSMutableArray alloc]init];
进入tableview
' cellforRowAtIndexpath
方法
检查
if indexPath == 0
{
cell.userInteractionenabled = YES;
cell.contentView.backgroundColor = [UIColor greenColor];
}else if [arr containsObject : indexPath.row]
{
cell.userInteractionenabled = YES;
cell.contentView.backgroundColor = [UIColor greenColor];
}else
{
cell.userInteractionenabled = NO;
cell.contentView.backgroundColor = [UIColor redColor];
}
现在进入didSelectRowAtIndexPath
方法
[arr addObject: indexPath.row +1 ];
[self.tableView reloaddata];
答案 2 :(得分:0)
使用
- (BOOL)tableView:(UITableView *)tableView shouldHighlightRowAtIndexPath:(NSIndexPath *)indexPath;
对于特定的选择行,只需通过
忽略行选择return NO;