我尝试了很多不同的方法在我的tableview中使用自定义单元格,但没有任何工作。我也尝试过使用UITableViewCell的子类,但它也没有用。
所以,我回到了一个更简单的解决方案。
我在TableView中有一个原型Cell - 它是具有标识符的Class UiTableViewCell:LocalPostsCell
我的代码是:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [self.postsTable dequeueReusableCellWithIdentifier:@"LocalPostsCell" ];
// ... blah blah get values for name/text variables
UILabel *nameLabel = (UILabel *)[cell viewWithTag:100];
UILabel *descriptionLabel = (UILabel *)[cell viewWithTag:101];
if (name == nil || [name isEqual:[NSNull null]]) {
// handle the place not being available
nameLabel.text= @"";
} else {
nameLabel.text = name;
}
if (text == nil || [text isEqual:[NSNull null]]) {
// handle the place not being available
descriptionLabel.text = @"";
} else {
descriptionLabel.text = text;
}
return cell;
}
我也试过这个:
UITableViewCell *cell = [self.postsTable dequeueReusableCellWithIdentifier:@"LocalPostsCell" forIndexPath:indexPath];
除了(lldb) - 线程1 - 断点1.1错误外,所有这些都在此行失败并且控制台中没有打印任何内容。
我为所有例外添加了断点,并且我启用了Zombies。
答案 0 :(得分:0)
您是否在Interface Builder中正确设置了正确的标识符字段(它应该是LocalPostsCell
)?
另一种可能性是你使用的是另一张表。通常,使用协议方法中的tableView
变量,而不是像self.postsTable
那样的自己的引用。
您还应该阅读错误消息并查看问题所在。您可以通过按调试器中的继续按钮获得更多信息。
顺便说一句,你可以隐式检查nil
,这样你就可以更加简洁。
nameLabel.text = name ? name : @"";
descriptionLabel.text = text ? text : @"";
答案 1 :(得分:0)
您是否为CellId注册了nib?但是,您不是第一次分配任何内容,请执行以下操作:
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"LocalPostsCell" ];
if (cell == nil)
{
cell = [[UITableViewCell alloc]init];
}
// Other things...
return cell;