在UITableView中,cell.detailTextLabel.text无效......为什么?

时间:2011-01-29 00:03:57

标签: iphone uitableview

tableView:cellForRowAtIndexPath:我有以下内容:

cell.textLabel.text = @"label";
cell.detailTextLabel.text = @"detail";

textLabel按预期显示,但detailTextLabel根本没有显示,但没有诊断。我所期望的是“细节”文本将出现在第二行的单元格中,低于“普通”文本,可能是字体较小。

在此处的另一个帖子中询问了同样的问题,用户“jbrennan”回答说tableview单元格样式必须是UITableViewCellStylePlain以外的其他内容。但是,似乎只有两种可能的样式UITableViewCellStylePlainUITableViewCellStyleGrouped。我得到相同的结果(细节标签没有出现)。

我在文档中没有看到其他单元格样式吗?上次更新UITableView是否发生了更改,detailTextLabel不再可用?我是否必须做一些额外的事情才能让它出现?有什么建议吗?

我正在使用xcode 3.2.5并为iPhone 4.2模拟器构建。

9 个答案:

答案 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];
}

enter image description here

答案 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
}

this question

上面的代码部分允许您设置您的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,足以实际显示文本。