更改其他视图控制器Swift的变量

时间:2015-04-09 23:48:24

标签: ios swift

我有一个模式segue到一个具有表视图的视图控制器。

当用户选择该表视图中的单元格时,我希望取消视图控制器,并在呈现视图控制器中,将变量更改为所选单元格的内容。

如何以编程方式更改另一个视图控制器中的变量? (不使用prepareForSegue方法,因为我没有做segue,但是我正在解雇视图控制器)

1 个答案:

答案 0 :(得分:2)

这听起来有点像一个奇怪的模式(从表格视图中选择通常在导航中向前移动)但你可以这样做。只需创建一个名为CellSelectNotification的协议,它需要一个标识所选单元的方法(可能需要一个indexPath,以保持实现简单)。您使父视图控制器符合该协议,并为视图控制器提供该表视图对其父视图的引用作为CellSelectNotification委托。当表视图选择了一个单元格时,您通过您定义的委托方法通知所选索引路径的父级,然后允许视图控制器被解除。

这是允许通常不应该相互引用的对象进行通信的一般方法 - 委托模式说“我需要处理一些情况,对接收者处理delegated - 实现是对来电者来说并不重要“。

另一种方法是通过Key-Value ObservingNSNotification进行此操作,但在这种情况下,最后两个对于您想要的简单通知有点重量级。