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
的参考。