2017-09-24 36 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' –

相關問題