这个让我把头发拉出来。我只是想用 UITableViewCellStyleSubtitle 样式创建一个带有文本和细节的表格。但细节并没有显示出来。通常这是因为有人忘记用正确的样式初始化单元格,但在这种情况下不是这样。我已经尝试了所有四种单元格样式,但细节没有显示在其中任何一个中,尽管当我使用 UITableViewCellStyleValue2 时文本标签确实移到了右侧。
我之前已经成功创建过很多次表格。在这种情况下,我能想到的唯一显着区别是我没有使用 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;
}
仅当我包含上面的“必需”行(并使用除默认值以外的任何单元格样式)时,我才能看到详细信息文本,即使我这样做,文本标签的位置也会与详细信息标签的位置完全重叠.
所以看起来好像初始化程序正在创建 detailTextLabel UILabel,但将其字体大小设置为零,并将其框架设置为空的或屏幕外的东西。(我试过在调试器中检查这些,但它不是很有用——字体大小为零,textLabel 和 detailTextLabel 的框架都是空的,但 textLabel 总是显示得很好。)
显然,如果必须,我可以通过手动调整标签大小和字体来解决它。但在这种情况下,我不得不这样做,这让我非常不安,通常你只需设置样式和文本,布局是自动的。我搜索了谷歌和堆栈溢出,但找不到任何对类似问题的引用。有人知道这里发生了什么吗?
(在 iOS 6.1 下测试。)