故事板中的原型单元格不会创buildUILabels等

我的问题与这个非常相似。
我在界面生成器中使用故事板devise的自定义原型单元格将所有内部对象设置为零(未创build),所以当我尝试为它们分配值时,它们保持空白。

我正在使用Xcode 4.6.2,并在6.1 iPhone模拟器中运行代码。 这是我所做的:

  • 在接口生成器中devise了一个具有必要字段的原型单元。
  • 在代码中为此自定义单元创buildUITableViewCell的子类,然后将接口生成器中的单元设置为此types。
  • 控制拖动字段到.h文件,为我设置的对象(UILabels等)。 我将单元格的标识符设置为“serverNameCell”
  • 将表的数据源和委托设置为该表所在的Viewcontroller。
  • 将表与ViewControler中的表对象关联起来

此刻,表格显示了正确的节数和行数,但单元格的值未被设置。

这是cellForRowAtIndexPath:(NSIndexPath *)indexPath代码:

 NewServerCell *cell = [tableView dequeueReusableCellWithIdentifier:@"serverNameCell"]; 

我总是找回一个单元格,并且内存位置对于一个有效的对象似乎是可以的。

但是当我尝试cell.name.text = [thisServer name]; 我发现cell.name标签总是为零。
没有崩溃 – 但我的领域没有被设置。

我已经检查了一百万次,标识符是好的 – 这是! 我已经通过故事板的定制单元格的苹果文档 – 但仍然得到这个令人沮丧的问题..

任何人都有这个,解决了吗?

我今天在Xcode 5的故事板上遇到了这个问题。 把几乎所有剩余的头发拉出来后,我注意到我正在调用这个viewDidLoad

[self.tableView registerClass:[SwitchTableViewCell class] forCellReuseIdentifier:@"Setting"];

哎呦! 在故事板中使用原型单元格时,此行是不必要的。 故事板自动为我configuration。 SwitchTableViewCell *tableViewCell = [tableView dequeueReusableCellWithIdentifier:@"Setting" forIndexPath:indexPath]; 没有调用registerClass::显式工作就好了。

问题仍然是为什么调用registerClass::导致一些sockets不能连接。

这个问题的一个简单的解决方法是在原型中标记UILabel并使用以下操作:

 UILabel* label = [cell viewWithTag:cellTag]; label.text = [thisServer name] 

这是最明显错过的原因( 我一直这么做! ):

你有没有设置你的tableview的委托和数据源到控制器? (即自己)

 - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. _tableView.delegate = self; _tableView.dataSource = self; } 

希望你已经得到了解决这个问题。 无论如何,因为我没有看到你的问题的直接答案,我写这个。

根据我在使用自定义Prototype单元格的情况下的经验,提供indexPath。 使用以下方法:

 MyCustomCell *cell = (MyCustomCell *)[tableView dequeueReusableCellWithIdentifier:@"CellIdentifier" forIndexPath:indexPath]; 

代替这个代码:

 NewServerCell *cell = [tableView dequeueReusableCellWithIdentifier:@"serverNameCell"]; 

改变这一点将很容易解决这个问题。 你会看到所有的标签和图像视图的值在tableview中可见。

在这一个上划伤我的头太难了。 结束了,我是我的CustomUITableViewCell.h文件中retain而不是strong IBOutlets声明。 我想我需要更多地研究内存pipe理。

错误:

 @property (nonatomic, retain) IBOutlet UIImageView *preview; 

正确:

 @property (nonatomic, strong) IBOutlet UIImageView *preview; 

检查你如何初始化你的TableViewController。 我有同样的问题,然后我觉得我没有适当地引用我的TableViewController。

所以我不得不在“pushViewController”之前更改我的代码。

而不是: [[TableViewController alloc]init]使用: [self.storyboard instantiateViewControllerWithIdentifier:yourTableViewIdentifier]

并不要忘记删除任何代码注册你的tableview的单元格类如下: [self.tableView registerClass:[SwitchTableViewCell class] forCellReuseIdentifier:@"Setting"];

希望能帮助到你

有些东西要尝试:

这听起来像你知道你在做什么,但我会提到明显只是想提醒你。 确保“名称”属性设置为IBOutlet。

  • 在IB中,您可以设置文件所有者的类types,将其设置为您的自定义类。

  • 只是为了排除故障,暂时取出出列的东西,并尝试它。

  • 尝试除“名称”以外的其他属性名称我不相信“名称”存在于基类中。

我之前遇到类似的事情,可能是简单的事情。

我也有同样的问题(标签在单元格中nil )。

我的补救措施是删除一个initWithCoder方法,我“意外”添加到表视图,而尝试其他的东西。 当单元格从故事板启动时调用此方法。 如果你覆盖它,而不是自己启动所有的标签,你最终会得到nil标签。

所以,作为这种症状的一个潜在的错误:检查这种方法的存在。

 -(id)initWithCoder:(NSCoder *)decoder { self = [self init]; return self; }