我有UITableView
原型UITableViewCell
。在每一行的内部,我都有一个按钮(图像),每次选择行时我必须将其设置为选中/未选中。我的原型单元使用自定义类,并在Interface Builder中进行设计。我尝试使用this问题的答案,但它不起作用。它告诉我UITableViewCell没有这样的属性,当我尝试使用我的自定义类时,它也给了我警告。如何解决这个问题?
我的代码如下:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
///UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
cell.accessoryType = UITableViewCellAccessoryNone;
cell.self.btnCellSelect.selected = YES;
[self updateValues];
[tableView deselectRowAtIndexPath:indexPath animated:YES];
}
答案 0 :(得分:2)
在访问之前,您需要将单元格转换为您的类。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[tableView deselectRowAtIndexPath:indexPath animated:YES];
YourCustomCellClass *cell = (YourCustomCellClass *)[tableView cellForRowAtIndexPath:indexPath];
cell.accessoryType = UITableViewCellAccessoryNone;
cell.self.btnCellSelect.selected = YES;
[self updateValues];
[tableView reloadData];
}
答案 1 :(得分:1)
核心问题是你的cellForRowAtIndexPath实际上正在返回你的子类的一个实例,但方法签名说它返回标准的超类UITableViewCell。
答案是将此对象强制转换为您的类。 SAFE的方法是通过类型检查返回的单元格然后强制转换。
if ([cell isKindOfClass:[YourSubclass class]]) {
YourSubclass *subclassCell = (YourSubclass *)cell;
//Other stuff
}