我曾经这样工作:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
cell.accessoryType = UITableViewCellAccessoryCheckmark;
}
- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
cell.accessoryType = UITableViewCellAccessoryNone;
}
但是现在我必须在不是UITableViewCell的单元格上做同样的事情: 我不得不在单元格中放入很多东西,所以我不能使用普通的UITableViewCells,而且我自己创建了它(称为PrototypeTableViewCell)。像这样:
@interface PrototypeTableViewCell : UITableViewCell
@property (weak, nonatomic) IBOutlet UILabel *eventTitle;
@property (weak, nonatomic) IBOutlet UILabel *eventLocation;
@property (weak, nonatomic) IBOutlet UILabel *eventStartDate;
@property (weak, nonatomic) IBOutlet UILabel *eventEndDate;
@end
那么我怎么能做我以前在普通TableViewCells上做的事情(比如设置附件:checkmark)? “cellForRowAtIndexPath:indexPath”不适用于我创建的类。
答案 0 :(得分:4)
您的PrototypeTableViewCell是UITableViewCell的子类。您只需将UITableViewCell转换为PrototypeTableViewCell,如下所示:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
// cast UITableViewCell to your PrototypeTableViewCell
PrototypeTableViewCell *cell = (PrototypeTableViewCell*)[tableView cellForRowAtIndexPath:indexPath];
// use its properties as normal
cell.accessoryType = UITableViewCellAccessoryCheckmark;
}