所以我选择了以编程方式设置UITableViewCell的布局:
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
self.selectedCellIndexPath = indexPath
var selectedCell = tableView.cellForRowAtIndexPath(indexPath)!
tableView.beginUpdates()
tableView.endUpdates()
var cell:SelectedPatientCell = tableView.dequeueReusableCellWithIdentifier("patient selected", forIndexPath: indexPath) as! SelectedPatientCell
cell.patientName.text = patients[indexPath.row].fullName
cell.dob.text = patients[indexPath.row].dob
...
selectedCell = cell
}
当我滚动tableView时,单元格的布局将重置为其在cellForRowAtIndexPath中设置的原始布局。但是,当我在上面的函数中设置它时,高度保持不变。有谁知道如何解决这个问题?
这是一张正在发生的事情的专辑: http://imgur.com/a/OUIMJ
图片1:原始状态
图片2:选择状态(如何保持滚动)
图3:实际发生的事情
答案 0 :(得分:1)
你应该在
中保持这种状态 func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
if indexPath == self.selectedCellIndexPath {
var cell:SelectedPatientCell = tableView.dequeueReusableCellWithIdentifier("patient selected", forIndexPath: indexPath) as! SelectedPatientCell
cell.patientName.text = patients[indexPath.row].fullName
cell.dob.text = patients[indexPath.row].dob
return cell
}
let cell = tableView.dequeueReusableCellWithIdentifier("patient selected") as! OriCell
...
return cell
}
这样,如果滚动tableView,它将不会恢复到原始Cell。 希望很清楚。
答案 1 :(得分:0)
所以我找到了自己的解决方案: 而不是做
tableView.beginUpdates()
tableView.endUpdates()
我需要在函数结束时执行此操作:
tableView.reloadData()
并且解决了问题