如何从 UiTableViewCell 更改视图控制器中字典的值
Posted
技术标签:
【中文标题】如何从 UiTableViewCell 更改视图控制器中字典的值【英文标题】:How to change value of dictionary in View Controller from UiTableViewCell 【发布时间】:2017-09-24 06:25:30 【问题描述】:所以我有 TableViewCell 是从我的视图控制器中的 2 个字典中填充的。
var categories : [Int : [String : Any]]!
var assignments : [Int: [String : Any]]!
我的单元格中有一个用户应该能够编辑的 UiTextField。然后,我希望能够根据用户更改的内容更改该字典中某些键的值,并使用这些更改重新显示表格。我的主要问题是我不知道如何从我的单元格中访问这些变量。我的视图控制器中有一个方法,它获取文本字段所在的行以及文本字段的值,并更新字典。我需要的是能够实例化单元格所在的视图控制器,但我需要已经将值加载到类别和分配字典中的原始实例。如果您对我如何完成此操作有任何其他想法,请发布。
【问题讨论】:
【参考方案1】:您可以使用委托将单元格数据共享给您的 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() 时,pickString(str: String) 会在您的 VC 中使用来自 textField 的字符串激活。
享受吧!
【讨论】:
在这种情况下,您将创建保留周期。delegate
内的 YourCell
属性应该是 weak
以上是关于如何从 UiTableViewCell 更改视图控制器中字典的值的主要内容,如果未能解决你的问题,请参考以下文章
自动调整 UITableViewCell:更改自定义单元格内视图的高度
如何在 OBJECTIVE C 的 UITableViewCell 中更改先前按下的 UIButton 标签?