我有一个模式 segue 到一个具有 TableView 的 View Controller 。
当用户在该 TableView 中选择一个单元格时,我希望关闭 View Controller ,并在呈现的 View Controller 中,将一个变量更改为所选单元格的内容。
如何以编程方式更改另一个 View Controller 中的变量? (不使用 prepareForSegue 方法,因为我没有进行 segue,而是关闭了 View Controller )
最佳答案
这听起来有点奇怪(从表格 View 中选择通常会在导航中向前移动),但您可以这样做。只需创建一个名为 CellSelectNotification
的协议(protocol),它需要一个方法来识别所选单元格(也许它需要一个 indexPath,以保持实现简单)。您使父 View Controller 符合该协议(protocol),并为呈现该 TableView 的 View Controller 提供对其父 View 的引用作为 CellSelectNotification 委托(delegate)。当 TableView 选择了一个单元格时,您通过您定义的委托(delegate)方法将所选索引路径通知父级,然后允许 View Controller 被关闭。
这是允许通常不应该相互引用的对象进行通信的一般方法 - 委托(delegate)模式表示“我需要处理一些情况,该处理被委托(delegate)
给接收者- 实现对调用者来说并不重要。
另一种方法是通过 Key-Value Observing或通过 NSNotification但在这种情况下,最后两个对于您想要的简单通知来说有点重量级。
关于ios - 更改其他 View Controller Swift 的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29550983/