出于某种原因,我的表视图的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;
}
这就是我所做的:
链接数据源和delgate
将IBOutlet链接到表格视图
将单元格标识符设置为Cell
确保数组不是nil(日志给出了正确的数字)
尝试使用静态NSMutableArray,但它有效,但是一旦我回到我的动态数组,它就没有了
“被叫”从未出现在日志中
答案 0 :(得分:2)
您初始化了消息:
messages = [[NSMutableArray alloc]init];
但是你从来没有填充数组。
根据数据源数组计数调用 cellForRowAtIndexPath
委托。
确保以下一行:
NSLog(@"Called Count %i",messages.count);
打印大于0的计数
答案 1 :(得分:1)
当您将xib或storyboard中的UITableView链接为IBOutlet时。为什么要再次创建UITableView “chatTable = [[UITableView alloc] init]” 从代码中删除此行并尝试。 还要从Interface Builder中设置委托和数据源,然后删除 chatTable.delegate = self; & chatTable.dataSource = self;
还发现您在 viewDidLoad 中创建了消息,这是不正确的。尝试打印此消息计数,它不应为零。
答案 2 :(得分:0)
我跳这些帮助..
<。>在.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;
}