我从静态Selection = None
的故事板场景中选择了UITableViewCell
。我还添加了这个方法:
- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath{
switch (indexPath.row) {
case 1:
return nil;
break;
}
}
这并没有特别好,因为它警告一个方法没有返回值。
细胞仍可选择,一次,短暂,然后不再。单元格设置如下:
case 1:
cell.textLabel.text = @"Search";
break;
和didSelectRowAtIndexPath
一样:
case 1:
NSLog(@"Unselectable Cell");
break;
我错过了什么吗?
答案 0 :(得分:4)
cell.userInteractionEnabled = NO;
答案 1 :(得分:2)
选择是突出显示后的状态,如果您按下一个单元格并且它变为蓝色,它会突出显示,当您释放它时,它已被选中。
因此,如果您无法突出显示该单元格,则无法选择该单元格。考虑到这一点,你可以这样做:
- (BOOL)tableView:(UITableView *)tableView shouldHighlightRowAtIndexPath:(NSIndexPath *)indexPath
{
// I'm assuming you just want it for the row 1, right?
if (indexPath.row == 1)
{
// You ain't getting selected today, son.
return NO;
}
return YES;
}
答案 2 :(得分:1)
我做的是做同样的事情:
- (UITableViewCell *)tableView:(UITableView *)tmpTableView cellForRowAtIndexPath: (NSIndexPath *)indexPath
{
tmpTableView.scrollEnabled = NO;
static NSString *CellIdentifier = @"MainCell";
UITableViewCell *cell = [tmpTableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (nil == cell)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
if(indexPath.row == 0)
{
cell.textLabel.textAlignment = NSTextAlignmentCenter;
cell.userInteractionEnabled = NO;
cell.textLabel.lineBreakMode = NSLineBreakByWordWrapping;
cell.textLabel.numberOfLines = 4;
cell.textLabel.textColor = [UIColor grayColor];
cell.textLabel.font = [UIFont systemFontOfSize:16.0];
cell.textLabel.text = [self.answerArray objectAtIndex:indexPath.row];
[cell.textLabel setAdjustsFontSizeToFitWidth:YES];
return cell;
}
}
cell.textLabel.font = [UIFont systemFontOfSize:18.0];
cell.textLabel.text = [self.answerArray objectAtIndex:indexPath.row];
return cell;
}
你可以逐行进行,当然这只适用于不会动态改变单元格数量的表格。
答案 3 :(得分:1)
你也可以尝试这个
tableView.allowsSelection = NO;
另一种方法
cell.selectionStyle = UITableViewCellSelectionStyleNone;
再来一次
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
[tableView deselectRowAtIndexPath:indexPath animated:YES];
}