如何从UiTableViewCell更改View Controller中的字典值

时间:2017-09-24 06:25:31

标签: ios swift uitableview dictionary swift3

所以我在我的视图控制器中从2个Dicitionaries中填充了TableViewCell。

var categories : [Int : [String : Any]]!
var assignments : [Int: [String : Any]]!

我的单元格中有一个UiTextField,用户应该可以编辑。然后,我希望能够根据用户更改的内容更改该字典中某些键的值,并使用这些更改重新显示该表。我的主要问题是我不知道如何从我的单元格中访问theese变量。我的视图控制器中有一个方法,它接受文本字段所在的行以及textField的值,并更新字典。我需要的是能够实例化单元格所在的视图控制器,但我需要已经将值加载到类别和赋值字典中的原始实例。如果您对如何完成此任务有任何其他想法,请发布。

1 个答案:

答案 0 :(得分:0)

您可以使用委托将单元格数据共享到VC:

protocol YourCellDelegate() {
    func pickedString(str: String)
}

class YourCell: UITableViewCell {
    var delegate: YourCellDelegate! = nil
    @IBOutlet weak var textField: UITextField!
    .....//some set-method, where you can handle a text
    func textHandle() {
        guard let del = delegate else { return }
        del.pickedString(textField.text)
    }

    .....
}

在VC中使用:在创建单元格时,将其委托设置为self:

...
cell.delegate = self
...

确保VC支持您的代理协议:

class YourVC: UIViewController, YourCellDelegate {
}

现在,你必须实现协议方法:

class YourVC: UIViewController, YourCellDelegate {
....
    func pickedString(str: String) {

    }
....
}

所有时候,当你在单元格中使用textHandle()时,selectedString(str:String)会在你的VC中使用textField中的字符串激活。

享受!