iOS:自定义TableViewCell - 初始化自定义单元格

时间:2014-02-28 20:04:03

标签: ios objective-c uitableview

在我的TableView中,我有一个NSMutableArray * currList的dataSource - 它包含对象Agent的对象。我创建了自定义的TableCell并正确设置了所有内容。我在显示数据时发现问题:

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
     static NSString *simpleTableIdentifier = @"ChatListCell";

     // Custom TableViewCell
     ChartListCell *cell = (ChartListCell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];

     if (cell == nil) {
           // I believe here I am going wrong
           cell = [[ChartListCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
           NSLog(@"Cell = %@", cell);  // Shows null
     }
     /*
     With UITableViewCell, things are working perfectly fine
     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
     if (cell == nil) {
         cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
     }
     */
     Agent *agent = (Agent *)[currChatList objectAtIndex:indexPath.row];
     NSLog(@"Agent name - %@", agent.name);   // Prints proper data
     cell.nameLabel.text = agent.name;
     cell.thumbImageView.image = [UIImage imageNamed:agent.photo];
     cell.timeLabel.text = agent.chatTime;

     return cell;
}

正如您在上面的代码注释中所看到的,如果我评论自定义ChartListCell并使用UITableViewCell,它可以正常工作。但是使用ChartListCell,没有任何内容出现,在日志中我得到“Cell = null”&代理名称正确显示。 单元格不应为空。为什么它是空的,任何人都可以帮我解决这个问题。我在哪里做错了?

非常感谢任何帮助。

谢谢

2 个答案:

答案 0 :(得分:15)

导入您的自定义单元格文件并尝试此

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

static NSString *simpleTableIdentifier = @"ChartListCell";

ChartListCell *cell = (ChartListCell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
if (cell == nil)
{
    NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"ChartListCell" owner:self options:nil];
    cell = [nib objectAtIndex:0];

}         

 Agent *agent = (Agent *)[currChatList objectAtIndex:indexPath.row];
 NSLog(@"Agent name - %@", agent.name);   // Prints proper data
 cell.nameLabel.text = agent.name;
 cell.thumbImageView.image = [UIImage imageNamed:agent.photo];
 cell.timeLabel.text = agent.chatTime;

return cell;
}

答案 1 :(得分:2)

基本上有四种可能的方法来制作自定义UITableViewCells: 如果您有兴趣了解这四个,那么有必要通过以下链接:  http://www.apeth.com/iOSBook/ch21.html#_custom_cells精美地描述了所有这些方法。

为了你的知识,请仔细阅读。