ios - 更改其他 View Controller Swift 的变量

标签 ios swift

我有一个模式 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/

相关文章:

swift - 查找 Realm 中包含多个对象的对象

swift - 如何在Xcode 7 UITests的ViewController中使用模拟MOC?

ios - Parse orQueryWithSubqueries 无法正常工作(快速)

iphone - 从文件中加载文本

ios - AudioKit:根据陀螺仪数据/摇摆手机改变声音?

ios - 如何创建一个重定向到我在 App Store 上的游戏的链接?

xcode - <未知> :0: error: opening import file for module 'Swift' : File name too long

cocoa - 二元运算符 '+' 不能应用于两个 CGFloat 操作数?

iOS 蓝牙 UUID 在 8.2 上启动一些应用程序后发生变化

ios - 如何请求授权以自定义 View 访问照片/相机胶卷?