在tableView:cellForRowAtIndexPath:
我有以下内容:
cell.textLabel.text = @"label";
cell.detailTextLabel.text = @"detail";
textLabel
按预期显示,但detailTextLabel
根本没有显示,但没有诊断。我所期望的是“细节”文本将出现在第二行的单元格中,低于“普通”文本,可能是字体较小。
在此处的另一个帖子中询问了同样的问题,用户“jbrennan”回答说tableview单元格样式必须是UITableViewCellStylePlain
以外的其他内容。但是,似乎只有两种可能的样式UITableViewCellStylePlain
和UITableViewCellStyleGrouped
。我得到相同的结果(细节标签没有出现)。
我在文档中没有看到其他单元格样式吗?上次更新UITableView
是否发生了更改,detailTextLabel
不再可用?我是否必须做一些额外的事情才能让它出现?有什么建议吗?
我正在使用xcode 3.2.5并为iPhone 4.2模拟器构建。
答案 0 :(得分:115)
您的初始化需要更改为:
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle
reuseIdentifier:CellIdentifier] autorelease];
我强调并加粗了你需要改变的部分。
答案 1 :(得分:14)
分配时,需要将单元格类型设置为Subtitle。
if (!cell) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:BasicCellIdentifier];
}
答案 2 :(得分:12)
使用Xcode 4.2时,在“故事板”中将“表视图单元格”样式设置为“字幕”。 dequeueReusableCellWithIdentifier
将返回一个实例化的单元格。
答案 3 :(得分:4)
在Storyboard中将表格View Cell Style设置为Subtitle
并编写此代码以配置您的单元格
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:BasicCellIdentifier] autorelease];
}
答案 4 :(得分:3)
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle
reuseIdentifier:CellIdentifier];
答案 5 :(得分:1)
斯威夫特3:
如果你让你的单元格覆盖“cellForRowAt indexPath”函数:
let tableContent = ["1", "2", "3", "4", "5"]
let tableDetailContent = ["a", "b", "c", "d", ""]
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = UITableViewCell(style: UITableViewCellStyle.subtitle, reuseIdentifier: "yourCellIdentifier")
cell.textLabel?.text = tableContent[indexPath.row]
cell.detailTextLabel?.text = tableDetailContent[indexPath.row]
return cell
}
上面的代码部分允许您设置您的detailTextLabel ..您可以在故事板上为表视图单元格样式(自定义,基本,右侧详细信息,左侧详细信息,字幕)设置您想要的任何内容,此行将覆盖它:< / p>
style: UITableViewCellStyle.subtitle
答案 6 :(得分:1)
对于Swift 4,尽管该技术与任何版本(或Obj-C)相同 -
我知道这个派对有点晚了,但是很多答案都让它变得比它需要的复杂得多。
假设您正在使用故事板,您需要做的就是将故事板中的表视图单元格样式设置为&#39;字幕&#39;,然后只需 -
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "myIdentifier", for: indexPath)
cell.textLabel?.text = "Title"
cell.detailTextLabel?.text = "Subtitle..."
return cell
}
绝对不需要使用代码来实例化单元格,只需像往常一样重复使用。
答案 7 :(得分:0)
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier: CellIdentifier];
答案 8 :(得分:0)
请确保设置默认的文本内容,并且宽度为width,足以实际显示文本。