Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何使用Swift中的协议和委托将变量从UIViewController传递回根导航控制器_Ios_Swift - Fatal编程技术网

Ios 如何使用Swift中的协议和委托将变量从UIViewController传递回根导航控制器

Ios 如何使用Swift中的协议和委托将变量从UIViewController传递回根导航控制器,ios,swift,Ios,Swift,正如您在所附的图像中看到的,我有一个名为-Notifications的根导航控制器和一个名为NotificationsController的UIViewController 所以我的问题是如何使用协议和委托将变量从NotificationsController传递回通知,因为在这种情况下,它们之间没有segue,只有默认关系 我的问题是否正确,或者是否有其他方法来满足我的需求 非常感谢从视图控制器引用导航控制器的任何帮助(这是可选的,因此您需要处理): 要从导航控制器引用视图控制器,请执行以下操

正如您在所附的图像中看到的,我有一个名为-Notifications的根导航控制器和一个名为NotificationsController的UIViewController

所以我的问题是如何使用协议和委托将变量从NotificationsController传递回通知,因为在这种情况下,它们之间没有segue,只有默认关系

我的问题是否正确,或者是否有其他方法来满足我的需求


非常感谢从视图控制器引用导航控制器的任何帮助(这是可选的,因此您需要处理):

要从导航控制器引用视图控制器,请执行以下操作:

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

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

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

在导航控制器堆栈上的视图控制器中,可以获取指向导航控制器的指针,并将其强制转换为type
UINavigationController

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

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