1

我已经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;

我还缺少什么吗?

4

4 回答 4

4

cell.userInteractionEnabled = 否;

于 2013-07-16T02:35:52.333 回答
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;
}
于 2013-07-16T02:42:40.613 回答
1

你也可以试试这个

tableView.allowsSelection = NO;

另一种方法

cell.selectionStyle = UITableViewCellSelectionStyleNone;

多一个

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
[tableView deselectRowAtIndexPath:indexPath animated:YES];
}
于 2013-09-13T10:24:12.890 回答
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;
}

您可以逐行进行,当然这仅适用于不动态更改单元格数量的表格。

于 2013-07-16T03:11:15.640 回答