我可以访问哪些属性来查找?
我从this tutorial,学到一些快速的东西,我决定给自己一些问题。一个是在教程中,为了编辑名称,有一个UIAlert
。我想摆脱它,而是用UITextField
代替UILabel,这样用户只需点击一个名字,然后进行编辑即可。我会使用textFieldDidEndEditing(textField: UITextField)
函数来更新模型,这是一个名称和图片文件名的字典。
我将视图控制器设置为UITextFieldDelegate
,我放入了该功能,但现在我卡住了,因为虽然文本在其中一个单元格中更新得很好,但我不知道如何告诉它发生在哪个牢房。
答案 0 :(得分:2)
在这种情况下,您可以考虑将UITextField
子类化为引用Dictionary
项目。
class DictionaryTextField: UITextField {
var item: [String : AnyObject]?
}
同时创建一个UITableViewCell的子类,将DictionaryTextField
作为IBOutlet
属性保留在上面。
class TextFieldTableViewCell: UITableViewCell {
@IBOutlet weak var textField: DictionaryTextField!
}
完成上述设置后,可以在Dictionary
中设置数据源的func tableView(:, cellForRowAtIndexPath: )
项。
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("CellIdentifier", forIndexPath: indexPath) as! TextFieldTableViewCell
cell.textField.delegate = self
let item = items[indexPath.row]
cell.textField.item = item
cell.textField.text = "TextField \(item["name"]!)"
return cell
}
稍后,在UITextFiedDelegate
中,将textField
强制转换为DictionaryTextField
。然后可以直接检索该项目。
func textFieldDidBeginEditing(textField: UITextField) {
guard let textField = textField as? DictionaryTextField else {
return
}
print("Did begin editing: \(textField.item)")
}
可以使用以下链接重新下载修订后的代码:https://db.tt/8j9ENf7b