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;
}
这是我所做的:
链接数据源和delgate
为 table 视图链接了 IBOutlet
将小区标识符设置为小区
确保数组不是 nil(日志给出正确的数字)
尝试使用静态 NSMutable 数组,它起作用了,但是一旦我回到我的动态数组,它就没有了
"Was Called" 从未出现在日志中
您已初始化消息:
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;
}
出于某种原因,我的 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;
}
这是我所做的:
链接数据源和delgate
为 table 视图链接了 IBOutlet
将小区标识符设置为小区
确保数组不是 nil(日志给出正确的数字)
尝试使用静态 NSMutable 数组,它起作用了,但是一旦我回到我的动态数组,它就没有了
"Was Called" 从未出现在日志中
您已初始化消息:
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;
}