【问题标题】:Present a UIViewController from an NSObject从 NSObject 呈现 UIViewController
【发布时间】:2013-10-17 22:40:03
【问题描述】:

我的数据模型中发生了一些事情,我需要展示一个通过情节提要实例化的模态视图控制器。

我该怎么做?我需要从 NSObject 呈现模态 VC,显然 presentViewController 是 UIViewController 方法。

最好的方法是什么?

UIStoryboard *mainStoryboard = [(AppDelegate *) [[UIApplication sharedApplication] delegate] storyboard];

NewMessageListenPopupVC *popupVC = [mainStoryboard instantiateViewControllerWithIdentifier:@"NewMessageListenPopupVC"];

[self presentViewController:popupVC animated:YES completion:nil];

编辑:

我可能最终会使用的代码:

UIStoryboard *mainStoryboard = [(AppDelegate *) [[UIApplication sharedApplication] delegate] storyboard];

NewMessageListenPopupVC *popupVC = [mainStoryboard instantiateViewControllerWithIdentifier:@"NewMessageListenPopupVC"];

UIViewController *rootVC = [[(AppDelegate *) [[UIApplication sharedApplication] delegate] window] rootViewController];
[rootVC presentViewController: popupVC animated:YES completion:nil];

【问题讨论】:

  • 减一有什么用?

标签: ios objective-c uiviewcontroller modalviewcontroller presentmodalviewcontroller


【解决方案1】:

r您可以通过从应用程序窗口获取 rootView 控制器然后在该 VC 上调用 presentViewController 来做到这一点。

UIViewController *vc = [window rootViewController];
[vc presentViewController: yourVC animated:YES completion:nil];

【讨论】:

  • 这似乎是个好主意。是否有机会释放 rootVC?
  • 我不这么认为,但可能会有一些极端情况。虽然我认为如果应用程序委托没有 rootViewController 会中止,但请不要引用我的话:P.
  • 在 UIViewcontroller 类之外找不到窗口属性。
  • MRizwan 你需要使用 UIWindow *window = [(AppDelegate *) [[UIApplication sharedApplication] delegate] window];
猜你喜欢
  • 2014-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-27
相关资源
最近更新 更多