我需要在启用UITableView的编辑模式时启用编辑文本字段。 它工作正常:
override func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) ->
Bool {
if (self.tableView.editing)
{
let cell = tableView.cellForRowAtIndexPath(indexPath) as TestTableViewCell
cell.testTextField.enabled=true
cell.showsReorderControl = true
return true
}
else{
return false
}
}
关闭编辑模式时,textfield steel可编辑。我将代码添加到其他地方以修复它:
else{
let cell2 = self.tableView.cellForRowAtIndexPath(indexPath) as TestTableViewCell
cell2.testTextField.enabled=false
return false
}
但是我收到了错误"致命错误:在打开一个Optional值时出乎意料地发现了nil"在这一行
let cell2 = self.tableView.cellForRowAtIndexPath(indexPath) as TestTableViewCell
答案 0 :(得分:3)
cellForRowAtIndexPath
只会在实际加载时返回一个单元格,即实际可见。任何不可见的行都没有加载单元格。
因此,您应检查可见性并检查单元格创建/外观/消失委托方法中的编辑状态,以便您可以在单元格上设置适当的状态。
答案 1 :(得分:1)
从Xcode给出的错误中,您需要检查数据类型。
else{
let cell2 = self.tableView.cellForRowAtIndexPath(indexPath) as? TestTableViewCell
cell2?.testTextField.enabled=false
return false
}
添加'?'之后' as'会有条件检查,并添加另一个'?'仅在不为零时才设置属性。
使用Optional值编程时,这是一个非常常见的问题。希望这可以提供帮助。