在VC中我有2个tableViews - 1个main和other在下拉菜单中添加。从下拉菜单TableView“ddTableView
”,我在Storyboard中添加了5 cells
作为原型单元格。每个cell
都包含image
和Label
。还为每个cell
设置了标识符。还为每个cell
的{{1}}设置了附件类型作为“披露指标”。
将mainTV的DataSource和Delegate设置为VC,并将ddTableView的委托设置为VC。在故事板中添加行时,我没有在ddTableView
中为ddTableView
设置任何数据源。我管理了我的委托方法: -
VC
它确实调用各自的委托方法。对于- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
if (tableView == ddTableView) {
// RETURNS NIL ???
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
NSLog(@"CELL Identifier = %@", cell.reuseIdentifier);
return cell;
} else {
}
}
-(void )tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
if (tableView == ddTableView) {
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
NSLog (@" CELL Clicked of - %@", cell.reuseIdentifier);
}
}
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
if (tableView == ddTableView)
return 44;
else
return 60;
}
-(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
if (tableView == ddTableView)
return 5;
else
return [chatMsgsArr count];
}
,它将单元格返回为nil。为什么这样 ?在执行时,我没有看到表视图的任何内容 - 表是空白的。我也改变了图像和文本颜色的bg颜色,但是在执行时却看不到任何东西。
为什么这样?我可能在哪里出错?
答案 0 :(得分:1)
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] ;
}
if (tableView == ddTableView) {
NSLog(@"CELL Identifier = %d", indexpath.row);
} else {
NSLog(@"CELL Identifier = %@", [chatMsgsArr objectAtIndex:indexPath.row]);
}
return cell;
}
答案 1 :(得分:1)
第一次调用cellForRowAtIndexPath
时,必须分配单元格。如果未分配单元格,则会立即返回nil
。
首次进入cellForRowAtIndexPath
时,您需要做的只是分配一次。之后,你可以像你一样重复使用它。
如果您打算使用默认tableViewCell
,则您的方法应如下所示:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *cellIdentifier = @"your_cell_identifier_name";
if (cell == nil)
{
UITableViewCell *cell = [UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
}
else
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier forIndexPath:indexPath];
}
//write the code to populate your cell with data here
//return the cell object
return cell;
}
希望这有帮助! :)