正如您在附件中看到的那样,我有一个名为Notifications的根导航控制器和一个名为NotificationsController的UIViewController。
所以我的问题是如何将NotificationsController中的变量传递回使用Protocol和Delegate的Notifications,因为在这种情况下没有segue但它们之间存在默认关系。
我的问题是否正确,还是有其他办法可以做我需要的事情。
非常感谢任何帮助
答案 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工作,不记得确切的语法。)