如何使用Swift中的Protocol和Delegate从UIViewController将变量传递回根导航控制器

时间:2016-01-13 16:07:26

标签: ios swift

Xcode Image

正如您在附件中看到的那样,我有一个名为Notifications的根导航控制器和一个名为NotificationsController的UIViewController。

所以我的问题是如何将NotificationsController中的变量传递回使用Protocol和Delegate的Notifications,因为在这种情况下没有segue但它们之间存在默认关系。

我的问题是否正确,还是有其他办法可以做我需要的事情。

非常感谢任何帮助

2 个答案:

答案 0 :(得分:0)

从视图控制器引用导航控制器(它是可选的,因此您需要处理它):

// self is a UIViewController
self.navigationController

从导航控制器引用视图控制器:

// self is a UINavigationController
let index = // Index of the view controller. You may need to iterate over viewControllers to find this.
self.viewControllers[index]

答案 1 :(得分:0)

您实际上不需要设置委托。正如keithbhunter在他的回答中指出的那样,视图控制器有一个navigationController属性,该属性将指向管理它的导航控制器。

我建议您为要发送到导航控制器的消息定义协议,然后让UINavigationController的自定义子类符合该协议。

在导航控制器堆栈中的视图控制器中,您可以获取指向导航控制器的指针并将其强制转换为UINavigationController<myNavControllerProtocol>类型。

(符合myNavControllerProtocol的UINavigationController。这些天我在Objective-C工作,不记得确切的语法。)