我正在加载一个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,但它没有做任何事情。
我该怎么做?
答案 0 :(得分:1)
textLabel
是UILabel
还是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;
}