在我的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”&代理名称正确显示。 单元格不应为空。为什么它是空的,任何人都可以帮我解决这个问题。我在哪里做错了?
非常感谢任何帮助。
谢谢
答案 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精美地描述了所有这些方法。
为了你的知识,请仔细阅读。