iOS SWRevealViewController - 在控制器之间传递数据

use*_*562 4 objective-c pass-data slide ios swrevealviewcontroller

我正在使用SWRevealViewController在我的应用程序中实现幻灯片菜单(从左侧).一切都工作正常,但现在我面临一个小问题.我想从我的"主"视图控制器传递数据(一个完全可见的,我不是称它为"frontViewController",因为它似乎不是前面一个).我已经尝试了所有可能的想法来访问幻灯片菜单控制器并将数据传递给它.这是我尝试过的:

(MyControllerClass*)self.revealViewController.rearViewController
(MyControllerClass*)self.revealViewController.frontViewController
Run Code Online (Sandbox Code Playgroud)

比我试过喜欢的东西self.revealViewController.navigationController[0],self.revealViewController.navigationController[1]也这样,self.revealViewController.viewControllers[0],self.revealViewController.viewControllers[1].下一步是实现prepareforsegue和监听segue标识符sw_frontsw_rear.但在这些情况下,我在检查时都是如此isKindOfClass[MyControllerclass class].我假设这是因为所有这些都是SWRevealViewController类型,不是吗?并且,prepareForSegue根本没有被调用,但一切都正常显示

对我来说,主要的问题是,如何在我的侧面菜单和我的"主要"(又名前面)控制器之间传递数据(另一种方式也可以)?

谢谢

use*_*562 5

我得到了答案.您无法通过SWRevealViewController直接访问自己的控制器(因为它连接到NavigationController).首先,您获得所需的navigationController,然后通过它们访问您的控制器(并传递数据).这是理论的代码:

UINavigationController* rearNavigationController = (UINavigationController*)self.revealViewController.rearViewController; 
//here you get the navigationController which is connected to the controller you want, in my case i want the rear controller

if ([rearNavigationController.topViewController isKindOfClass[MyCustomViewController]]) {
    MyCustomViewController* iWantYouController = (MyCustomViewController*)rearNavigationController.topViewController;
}
Run Code Online (Sandbox Code Playgroud)

就是这样.现在,您可以访问(并设置)自定义控制器上的每个属性