iOS中控制器之间的通信

我上周正在使用Obejctive-C学习iOS开发,我无法弄清楚如何在控制器之间进行通信。 这是我的故事板: 在此处输入图像描述

Routes Page View Controller是嵌入在容器视图中的PageViewController

MapViewController我想访问RoutesPageViewController来调用一些方法。 但是当我在MapViewController为容器视图创建一个sockets并将其转换为RoutesPageViewController并调用方法时,它会抛出此错误:

 *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIView items]: unrecognized selector sent to instance 0x7ff60551a300' 

这是逻辑,因为它不是RoutesPageViewController

所以我的问题是因为我将在我的iOS开发生涯中遇到这个问题: 控制器之间进行通信的方法是什么?

提前致谢。

ContainerView只是一个UIView。 它没有任何嵌入式ViewController的引用。 它在viewcontrollers之间创建了Parent-Child关系。 像这里一样, MapViewController是父级, RoutesPageViewController是子级。

现在,为了获得child的引用,你应该使用ViewController childViewControllers属性。 它将返回一个子ViewControllers数组。

就像在MapViewController

 let routeVC : RoutesPageViewController? = self.childViewControllers.filter{$0 is RoutesPageViewController}.first 

将为您提供RoutesPageViewController的参考。