自定义UITableViewCell错误

时间:2010-10-15 14:11:56

标签: iphone objective-c ipad ios4

我正在尝试使用我在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;

}

之前有人见过这种错误吗?如果您需要更多信息,请告诉我......

3 个答案:

答案 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,因为他指示我检查笔尖。谢谢你的帮助!