2017-09-24 38 views
0

所以我有我的视图控制器中的2个Dicitionaries填充TableViewCell的。如何更改视图控制器中的字典值从UiTableViewCell

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

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

回答

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:当您创建的细胞,将其委托的自我:

... 
cell.delegate = self 
... 

,并确保你VC支持您的委托协议:

class YourVC: UIViewController, YourCellDelegate { 
} 

而现在,您必须执行协议方法:

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

    } 
.... 
} 

所有的时间,当你在你的使用textHandle(),pickedString(STR:字符串)激活yourVC从文本框的字符串。

享受!

+0

在这种情况下,您将创建保留周期。 'YourCell'内的'delegate'属性应该是'weak' –

相关问题