这一个让我拉我的头发。我只是想用UITableViewCellStyleSubtitle样式创建一个带有文本和细节的表格。但细节没有显示出来。通常这是因为有人忘记用正确的样式初始化单元格,但在这种情况下不是这样。我已经尝试了所有四种单元格样式,并且其中的任何一种都没有显示细节,但是当我使用UITableViewCellStyleValue2时,文本标签确实移到了右侧。为什么我的UITableViewCell不能在任何样式中显示detailTextLabel?
我已经成功创建了多次之前的表。在这种情况下,我能想到的唯一显着差异是我没有使用UITableViewController。相反,我像任何其他视图一样嵌入UITableView,并连接我自己的数据源和委托。
我的主要手段归结为:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
// Get the UITableViewCell (out of the recycling pool, or de novo)
NSString *reuseID = @"CELL";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:reuseID];
if (not cell) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue2 reuseIdentifier:reuseID] autorelease];
}
cell.textLabel.text = @"Foo";
cell.detailTextLabel.text = @"Bar";
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
cell.detailTextLabel.frame = CGRectMake(10, 20, 200,22); // required
cell.detailTextLabel.font = [UIFont boldSystemFontOfSize:12]; // also required
//[cell setNeedsLayout]; (makes no difference)
return cell;
}
我只能看到我是否包括上述两种“必需的”线的详细文本(和使用除Default以外的任何单元格样式) ,甚至当我这样做时,文本标签的位置与细节标签的位置完全重叠。
因此,看起来好像初始化程序正在创建detailTextLabel UILabel,但将其字体大小设置为零,并将其框架设置为空或离屏。 (我试图在调试器中检查这些,但它并不是非常有用 - 字体大小为零,框架为空textBabel和detailTextLabel,但textLabel总是显示正常)。
很明显,我可以如果必须通过手动调整标签大小和字体来解决这个问题。但是在这种情况下,我必须这样做,这让我非常不安,因为通常情况下,您只需设置样式和文本并且布局是自动的。我搜索了Google和堆栈溢出,但找不到任何类似问题的参考。有人知道这里发生了什么吗?
(测试的iOS 6.1下。)
您使用的故事板?如果是这样,您需要将该属性设置为单元格中的字幕。这应该得到detailTextLabel显示。我以前遇到过这个问题。 – 2013-03-15 04:00:50
不,没有故事板或XIB。只是代码。 – 2013-03-15 04:03:42
而且,当我说我可以通过更改框架解决它时...我可以更改detailTextLabel.frame,但是我所有尝试更改textLabel.Frame都没有效果。在cellForRowAtIndexPath和tableView中都是true:willDisplayCell:forRowAtIndexPath。单元格本身似乎与textLabel有关,并完全忽略了detailTextLabel。 – 2013-03-15 04:05:10