Table 视图的 cellForRowAtIndexPath:未被调用

Table View's cellForRowAtIndexPath: not being called

出于某种原因,我的 table 视图的 cellForRowAtIndexPath:(NSIndexPath *)indexPath 方法没有被调用。这是我的代码:

- (void)viewDidLoad {
    [super viewDidLoad];
    messages = [[NSMutableArray alloc]init];
    chatTable = [[UITableView alloc]init];
    chatTable.delegate = self;
    chatTable.dataSource = self;
}


- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    NSLog(@"Called Count %i",messages.count);
    return messages.count;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSLog(@"Was Called");

    static NSString *cellId = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellId];
    NSDictionary *message = [messages objectAtIndex:indexPath.row];
    NSString *mess = [message objectForKey:MSChatMessage];
    cell.textLabel.text = mess;

    return cell;
}

这是我所做的:

您已初始化消息:

messages = [[NSMutableArray alloc]init];

但是你从未填充数组。

cellForRowAtIndexPath 根据数据源数组计数调用委托。

确保以下行:

NSLog(@"Called Count %i",messages.count);

打印大于 0 的计数

当您从 xib 或故事板将 UITableView 链接为 IBOutlet 时。你为什么要再次创建 UITableView "chatTable = [[UITableView alloc]init]" 从代码中删除这一行并尝试。 还从 Interface Builder 设置委托和数据源并删除 chatTable.delegate = self; & chatTable.dataSource = self;

还观察到您在 viewDidLoad 中创建了 message,这是不正确的。尝试打印此消息计数,它不应为零。

我希望这些帮助..

在 .h 文件中..

NSMutableArray * messages;

在 .m 文件中..

- (void)viewDidLoad 
{
 [super viewDidLoad];
 // Initialization of NSMutableArray. 
 messages = [[NSMutableArray alloc]init];
}

并确保它在这里不为零..

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
 NSLog(@"Called Count %i",messages.count);
 return messages.count;
}