我从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不是nil,所以它在情节提要中找到了我的观点。
无论如何,presentViewcontroller消息似乎在完成预期的工作。

当然是一个愚蠢的错误,但是我对iOS编程的了解不足使我迷糊了!

我成功地使用了ViewController子类中的这段代码,因为在这里我获得了有效的ViewController指针,所以我不明白为什么它不起作用。

我还尝试实现此处How to launch a ViewController from a Non ViewController class?所述的AppDelegate方法,但得到的导航指针为nil。也许我的应用程序中没有很好的联系
我可以解释一下吗?

亲切的问候,

最佳答案

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


(a)让导航控制器将新的视图控制器推到
堆栈(pushViewController:animated :);
(b)在视图控制器堆栈中有顶视图控制器
新的视图控制器以模态形式(presentViewController:animated:completion :),或
(c)将新的视图控制器添加到视图控制器堆栈数组
通过向导航分配新的viewControllers数组来手动进行
控制器的viewControllers属性(setViewControllers :)。

关于ios - 从非UI类显示ViewController,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25584828/

10-11 19:43