我为UITableView提供了一个很好的customCell,一切运行良好。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = nil;
CustomCell *cell = (CustomCell *) [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil];
for (id currentObject in topLevelObjects){
if ([currentObject isKindOfClass:[UITableViewCell class]]){
cell = (CustomCell *) currentObject;
break;
}
}
}
// LOOK HERE: cellArrowPointingRight is an UIImage view of which I like to turn on later
[cell.cellArrowPointingRight setHidden:YES];
// The above line works as it hides all cellArrowPointingRight(s)
return cell;
}
在自定义视图中(在IB中制作)我也有cellArrowPointingRight(它连接到M中的H和@synthesize cellArrowPointingRight
问题是我在选择单元格时无法运行它
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
// cell.contentView.backgroundColor = [UIColor colorWithRed:1.0 green:0.0 blue:0.0 alpha:0.5];
cell.textLabel.text = @"Clicked";
// PROBLEM HERE: (cellArrowPointingRight is not legal)
[cell.cellArrowPointingRight setHidden:NO];
}
我该如何解决这个问题?
答案 0 :(得分:1)
正在使用:
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
默认单元格通常不应该有一个名为cellArrowPointingRight的字段,因此普通UITableViewCell
不会响应该字段。
您需要做的是将单元格设为:
CustomCell *cell = (CustomCell*)[tableView cellForRowAtIndexPath:indexPath];
假设您的CustomCell是UITableViewCell的超类。