在NSArray UITableView中禁用单元格

时间:2014-01-29 20:43:36

标签: uitableview nsarray

我正在加载一个tableview,并希望将对象2和对象4灰显,并禁用它们进行用户交互。

在.h我有

@property (nonatomic, strong) NSArray *list;

和.m:

  - (void)viewDidLoad
    {
        [super viewDidLoad];

        self.list = [[NSArray alloc] initWithObjects:@"Object 1", @"Object 2", @"Object 3", @"Object 4", @"Object 5", nil];


    }

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }


    cell.textLabel.text = [list objectAtIndex:[indexPath row]];


    return cell;
}

我尝试使用

获取对象

object = [self.list objectAtIndex:2]获取对象2,但它没有做任何事情。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

textLabelUILabel还是UITextField?这个命名让我怀疑。假设它是UILabel并且您想要阻止与单元格(以及其中的控件)的交互,您可以执行以下操作。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }


    cell.textLabel.text = [list objectAtIndex:[indexPath row]];


    if (indexPath.row == 1 || indexPath.row == 3) {
        cell.userInteractionEnabled = NO;
    } else {
        cell.userInteractionEnable = YES;
    }

    return cell;
}

或者您只是想阻止用户选择单元格?在这种情况下,您应该考虑在tableView:willSelectRowAtIndexPath:中覆盖UITableViewDelegate

- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    if (indexPath.row == 1 || indexPath.row == 3) {
        return nil;
    return indexPath;
}