从ECSlidingViewController呈现模态视图控制器

时间:2013-04-16 11:01:35

标签: ios objective-c xcode ecslidingviewcontroller

在我的应用中,我通过ECSlidingViewControllerStoryboard声明为初始根控制器。在我的AppDelegate的didFinishLaunchingWithOptions方法中,我将其实例化如上:

self.slidingController = [[UIStoryboard storyboardWithName:@"AppStoryboard" bundle:[NSBundle mainBundle]] instantiateViewControllerWithIdentifier:@"ECSlidingViewController"];

我想要的是能够显示全局模态视图控制器(例如,当应用程序处于活动状态时推送通知时),而不知道哪个控制器当前位于滑动控制器的顶部。

我所做的是(在我的AppDelegate中):

[self.slidingController.topViewController presentModalViewController:controller animated:YES];

但它似乎不起作用。

有什么方法可以从我的滑动控制器中呈现一个模态控制器,无论哪个控制器是topViewController?

PS。如果不是,我想要的内容是否有可能与SWRevealViewController而不是ECSlidingViewController一起使用?如果它值得,我将走痛苦的道路来切换。

提前谢谢!

2 个答案:

答案 0 :(得分:1)

如果将ECSlidingViewController设置为故事板中的初始视图控制器,那么为什么要在应用委托代码中实例化另一个?通过这样做,您在ECSlidingViewController的不同实例上调用您的方法,而不是故事板在屏幕上放置的方法。这可能是您问题的根源。相反,请获取对此ECSlidingViewController的引用:

self.slidingController = self.window.rootViewController;

然后试试,

self.slidingController.topViewController presentModalViewController:controller animated:YES];

self.slidingController presentModalViewController:controller animated:YES];

我没有使用ECSlidingViewController,所以我不知道哪些可能有效。

答案 1 :(得分:0)

试试这个

UIViewController *rootViewController = self.window.rootViewController;
// You now have in rootViewController the view with your "Hello world" label and go button.

// Get the navigation controller of this view controller with:
UINavigationController *navigationController = rootViewController.navigationController;

[navigationController.topViewController presentModalViewController:controller animated:YES];