我使用willDeselectRowAtIndexPath
和didSelectRowAtIndexPath
隐藏和取消隐藏tableView中行的内容。这适用于我的设备(ipad和iphone),但在模拟器中效果不佳。两者都具有相同的数据源。
为什么它不能在模拟器中工作?
这是我使用的代码,我展开单元格以显示内容,并收缩隐藏。
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
if indexPath.row == selectedRowIndex {
//expand
return (tableView.frame.height/6)*3
}
return tableView.frame.height/6
}
func tableView(tableView: UITableView, willDeselectRowAtIndexPath indexPath: NSIndexPath) -> NSIndexPath? {
// print("unselected this \(indexPath)")
let cell:appCell? = tableView.cellForRowAtIndexPath(indexPath) as? appCell
if (cell != nil)
{
// hide cell
cell!.textView.hidden = true
cell!.tittle.hidden = true
cell!.expand.hidden = true
cell!.shared.hidden = true
cell!.resumen.textColor = .lightGrayColor()
}
return indexPath
}
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
if selectedRowIndex != indexPath.row {
self.thereIsCellTapped = true
self.selectedRowIndex = indexPath.row
}
else {
// there is no cell selected anymore
self.thereIsCellTapped = false
self.selectedRowIndex = -1
}
let cell:appCell? = tableView.cellForRowAtIndexPath(indexPath) as? appCell
if indexPath.row == selectedRowIndex {
if(tableView.cellForRowAtIndexPath(indexPath)?.frame.height == tableView.frame.height/6){
//show
Utils().delay(0.3, closure: {
cell!.textView.hidden = false
cell!.tittle.hidden = false
cell!.expand.hidden = false
cell!.shared.hidden = false
cell!.resumen.textColor = Colors.marron
})
}else {
//hide
cell!.textView.hidden = true
cell!.tittle.hidden = true
cell!.expand.hidden = true
cell!.shared.hidden = true
}
}else{
// hide
cell!.textView.hidden = true
cell!.tittle.hidden = true
cell!.expand.hidden = true
cell!.shared.hidden = true
}
tableView.beginUpdates()
tableView.endUpdates()
}