我有一个包含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
}
屏幕截图示例: