我正在尝试使用我在IB中构建的单元格构建自定义表格视图。我收到一个奇怪的错误:
<BroadcastViewController 0x4b4f5f0> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key postText.
所有内容都在IB中正确连接到单元控制器。不确定为什么会这样。
这就是我的cellForRowAtIndexPath:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
//Get the folder object of interest
Broadcast *messageAtIndex = [self.messages objectAtIndex:indexPath.row] ;
static NSString *CellIdentifier = @"BroadcastTableViewCell";
static NSString *CellNib = @"BroadcastTableViewCell";
BroadcastTableViewCell *cell = (BroadcastTableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
//ERRORING ON THIS LINE...
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:CellNib owner:self options:nil];
cell = (BroadcastTableViewCell *)[nib objectAtIndex:0];
}
cell.postText.text = messageAtIndex.replyText;
cell.authorName.text = messageAtIndex.postCreatorFirstName;
cell.postDate.text = messageAtIndex.creationDate;
return cell;
}
之前有人见过这种错误吗?如果您需要更多信息,请告诉我......
答案 0 :(得分:5)
真正奇怪的是它抱怨课程BroadcastViewController
不符合postText
的KVC。
据我所知,postText
是您单元格中的标签,因此IBOutlet应位于BroadcastTableViewCell
类中。因此,请查看您在IB中链接postText
标签的位置。此外,您可能在视图控制器中为此标签设置了IBOutlet,您已将其删除,但您忘记删除IB中的链接。无论如何,有一个地方是你的问题。您在该行上出现错误的事实仅仅是因为您在那里加载了NIB,它与单元本身或与所有者没有任何关系。
答案 1 :(得分:1)
可能与dequeueReusableCellWithIdentifier返回UITableViewCell *有关。
我通常这样做:
UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier...
CustomCell* acell = (CustomCell*)cell;
将所有者设为nil。
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:CellNib owner:nil options:nil];
答案 2 :(得分:1)
好的想通了。 IB中的连接确实不正确。我把它们链接到文件的所有者而不是实际的对象。我要给这个太Stelian,因为他指示我检查笔尖。谢谢你的帮助!