从非UI类显示ViewController

时间:2014-08-30 17:03:09

标签: ios

我从Ojective§C类执行一些数据加载任务,一旦加载完所有内容,我只想显示在故事板中准备的Viewcontroller子类。

所以当一切正常时,会调用以下方法:

- (void)loadingNextView
{
    CABBndGSite *mySite = [CABBndGSite alloc];

    CABBndGSelectLanguageViewController *vc = [[mySite myRootViewController].storyboard instantiateViewControllerWithIdentifier:@"SelectLanguageViewController"];
[[mySite myRootViewController] presentViewController:vc animated:YES completion:nil];

}

所以我确认myRootViewController不是nil。这是一个UINavigationController类。 vc不是零,所以它在故事板中找到了我的观点。 无论如何,presentViewcontroller消息似乎正在做预期的事情。

当然是一个愚蠢的错误,但我糟糕的iOS编程知识让我陷入困境!

我使用ViewController子类中的代码成功,因为我得到了一个有效的ViewController指针,我不明白为什么它不起作用。

我还试图实现这里解释的AppDelegate方法How to launch a ViewController from a Non ViewController class?,但我得到一个零导航指针。也许在我的应用程序中没有很好的连接 我可以解释一下吗?

亲切的问候,

1 个答案:

答案 0 :(得分:1)

UINavigationController维护一堆视图控制器。您可以通过viewControllers属性访问此堆栈。要显示视图控制器,您可以:

  • (a)让导航控制器按下新视图控制器 堆栈(pushViewController:animated:);

  • (b)在视图控制器堆栈中存在顶视图控制器 新视图控制器modally(presentViewController:animated:completion :),或;

  • (c)将新视图控制器添加到视图控制器堆栈数组中 通过将新的viewControllers数组分配给导航来手动完成 controller的viewControllers属性(setViewControllers:)。