【发布时间】:2015-12-21 12:26:32
【问题描述】:
我是一个名为tableView 的 UITableView。这是一个名为namesArray的数据数组。
我有一个向数组添加名称的函数,如下所示:
-(void)addName:(NSString*)name
{
[self.namesArray addObject: name];
[self.tableView reloadData];
}
在我在tableView 上调用reloadData 后,最后一个单元格(添加的那个)没有显示在tableView 上,numberOfRowsInSection 返回实际数字,因此另一个单元格有空间但有不是真正的细胞。
我正在调试cellForRowAtIndexPath,我发现当cellForRowAtIndexPath 调用新单元格时,dequeueReusableCellWithIdentifier 在调用其他单元格时返回 nil(当然 indexPath.row == 0 除外)它返回一个单元格。
cellForRowAtIndexPath的代码:
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cellIdentifier=@"Cell";
UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (!cell) {
cell=[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
}
cell.textLabel.text=[self.namesArray objectAtIndex:indexPath.row];
return cell;
}
行数:
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return self.namesArray.count;
}
注意:如果我尝试使用NSLog 打印namesArray 的最后一个对象,它看起来很好(最后一个对象是创建的新对象)所以重新加载tableView 的数据会出现问题
你能帮帮我吗?谢谢!
【问题讨论】:
-
我们可以看到
numberOfRowsInSection中的代码吗? -
这不是你应该如何让单元格出队的方式,你应该使用
dequeueReusableCellWithIdentifier(identifier:forIndexPath:),它总是返回一个有效的单元格 -
@AliRiahipour 是的!我已经更新了帖子
-
@DanielGalasko 我不想为单元格注册笔尖,我想要默认的。
-
您可以注册一个类或一个NIB。查看 API:
registerClass(:forReuseIdentifier)
标签: ios objective-c uitableview cocoa-touch