一尘不染

UITableViewCell不显示detailTextLabel.text-Swift

swift

详细(字幕)文本不会出现。但是,数据是可用的,因为添加了println()调用后,它将使用期望的数据将Optional(“
data”)打印到控制台。在情节提要中,将UITableViewController设置为适当的类,将Table View Cell Style设置为“
Subtitle”,并将重用标识符设置为“ cell”。如何显示字幕信息?

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    var cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as UITableViewCell

    dispatch_async(dispatch_get_main_queue(), { () -> Void in

        cell.textLabel.text = self.myArray[indexPath.row]["title"] as? String
        cell.detailTextLabel?.text = self.myArray[indexPath.row]["subtitle"] as? String

        println(self.myArray[indexPath.row]["subtitle"] as? String)
        // The expected data appear in the console, but not in the iOS simulator's table view cell.

    })
    return cell
}

阅读 511

收藏
2020-07-07

共1个答案

一尘不染

这里有同样的问题(从我读到的内容来看,也许是iOS 8中的错误?),这就是我们的解决方法:

  1. 从情节提要中删除原型单元

  2. 删除此行:

var cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as UITableViewCell

  1. 替换为以下代码行:

    let cellIdentifier =“单元格”

    var cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier)as?UITableViewCell
    如果单元格== nil {
    单元格= UITableViewCell(样式:UITableViewCellStyle.Value2,复用标识符:cellIdentifier)
    }

Swift 3.1更新

let cellIdentifier = "Cell"

var cell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier)
if cell == nil {
    cell = UITableViewCell(style: UITableViewCellStyle.value2, reuseIdentifier: cellIdentifier)
}

Swift 4.2更新-简化

let cell = UITableViewCell(style: UITableViewCell.CellStyle.value2, reuseIdentifier: "cellId")
2020-07-07