Swift:UITableViewCell自动行高用于样式字幕

时间:2014-12-26 17:46:20

标签: ios iphone uitableview swift

我有一个包含2个部分的tableView,第一部分是用户之前输入的文本,另一部分是基于该文本的选择。第一部分有一个Default tableViewCell样式,第二部分有一个Subtitle样式。第一部分只是一个单元格,它根据文本的数量动态调整大小而没有问题。第二部分是多个单元格,设置了UITableViewCell.textLabel和UITableViewCell.detailText。这些是根本没有自动调整大小的单元格,我不知道我做错了什么。注意:1)我确实在viewDidLoad()方法中设置了tableView.rowHeight = UITableViewAutomaticDimension。 2)我没有在故事板中使用原型单元。

This article表示我“必须对contentView有约束”。老实说,我不知道这意味着什么。我知道在故事板上设置内容有哪些限制。我只是不知道他在这种情况下意味着什么,或者如果我没有原型单元,我会怎么做。

另外,我必须设置两个重用标识符,具体取决于它的哪个部分。这样它就不会尝试重用我为用户的输入文本留出的单元格/部分。

考虑到所有这些,这是我的代码。我是Swift的新手并且正在开发iOS,所以如果你有重构的建议/建议,请随时告诉我。我已经评论了一些我尝试过的东西。将行高设置为66确实有效,但这不是目标。我希望它是动态的,因为我不知道以后会发生什么变化。

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

    var cellIdentifier = ""
    if indexPath.section == 1 {
        //tableView.rowHeight = 66
        //tableView.rowHeight = UITableViewAutomaticDimension
        cellIdentifier = "DistortionItem"
    } else {
        //tableView.rowHeight = 160
        cellIdentifier = "NegativeThought"
    }

    var cell: UITableViewCell! = tableView.dequeueReusableCellWithIdentifier(cellIdentifier) as? UITableViewCell

    if indexPath.section == 1 {


        if cell == nil {
            cell = UITableViewCell(style: .Subtitle, reuseIdentifier: cellIdentifier)
        }


        cell.textLabel?.text = distortionslist.distortions[indexPath.row].0
        cell.detailTextLabel?.font = UIFont.systemFontOfSize(10)
        cell.detailTextLabel!.text = distortionslist.distortions[indexPath.row].1
        cell.textLabel?.numberOfLines = 0
        cell.detailTextLabel?.numberOfLines = 0
        //tableView.reloadRowsAtIndexPaths([indexPath], withRowAnimation: .Automatic)
        //cell.textLabel?.sizeToFit()
        //cell.detailTextLabel?.sizeToFit()

    } else {

        if cell == nil {
            //println("Cell set to default")
            cell = UITableViewCell(style: .Default, reuseIdentifier: cellIdentifier)
        }

        cell.textLabel?.font = UIFont.systemFontOfSize(12)
        cell.textLabel?.text = entry.thoughtText
        cell.textLabel?.numberOfLines = 0
        //cell.textLabel?.sizeToFit()
    }

    return cell
}

屏幕截图示例:

enter image description here

0 个答案:

没有答案