启用 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
        }
    }

当编辑模式关闭时,文本字段钢可编辑。我将代码添加到 else 以修复它:
 else{
    let cell2 = self.tableView.cellForRowAtIndexPath(indexPath) as TestTableViewCell
                cell2.testTextField.enabled=false
            return false
        }

但是我在这一行收到错误“致命错误:在解开可选值时意外发现 nil”
let cell2 = self.tableView.cellForRowAtIndexPath(indexPath) as TestTableViewCell

最佳答案

根据Xcode给出的错误,您需要检查数据类型。

else{
let cell2 = self.tableView.cellForRowAtIndexPath(indexPath) as? TestTableViewCell
            cell2?.testTextField.enabled=false
        return false
    }

添加 '?'在 'as' 之后将进行条件检查,并添加另一个 '?'仅当属性不为零时才设置属性。

这是使用 Optional 值编程时非常常见的问题。希望这能有所帮助。

关于ios - 无法通过 cellForRowAtIndexPath 获取单元格,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28106998/

10-11 19:52