我有一个UITableViewController,在cellForRow中有以下代码
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *CellIdentifier = [self.items objectAtIndex:indexPath.row];
SettingsTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
if (cell == nil) {
cell = [[SettingsTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
cell.avatarPhoto.image = [UIImage imageNamed:@"frownFace.png"];
return cell;
}
在SettingsTableViewCell中,我将avatarPhoto声明为以下内容:
@property (nonatomic, strong) IBOutlet UIImageView *avatarPhoto;
我的故事板连接看起来像这样:
http://cl.ly/image/3k1N3e0c2V2w
由于某种原因,我在将图像附加到UIImageView时出现以下错误:
'NSInvalidArgumentException', reason: '-[UITableViewCell avatarPhoto]: unrecognized selector sent to instance
有什么想法吗?
EDITS
我的单元格标识符使用NSArray按以下方式构建:
self.items = @[@"Cell", @"firstSep", @"accountManagement", @"realName", @"secondSep", @"friends", @"find", @"inviteText", @"inviteViaEmail", @"thirdSep", @"more", @"feedback", @"terms", @"privacy", @"attribution", @"footerSep"];
这就是我的Cell在故事板中的样子:
http://cl.ly/image/0d3L3E2W3E1n
答案 0 :(得分:1)
由于错误显示为-[UITableViewCell avatarPhoto]:
,因此您在出列单元格时获取UITableViewCell
而非SettingsTableViewCell
实例。在故事板中检查类
转到attribute inspector
,然后选择cell
并提供cell identifier
和cell class name
SettingsTableViewCell *cell = (SettingsTableViewCell *)[tableView dequeueReusableCellWithIdentifier:@"yourCellIdentifier" forIndexPath:indexPath];
此外,您无需编写
if (cell == nil) {
cell = [[SettingsTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
如果没有, dequeueReusableCellWithIdentifier
保证提供细胞实例。