我从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?,但我得到一个零导航指针。也许在我的应用程序中没有很好的连接 我可以解释一下吗?
亲切的问候,
答案 0 :(得分:1)
UINavigationController维护一堆视图控制器。您可以通过viewControllers属性访问此堆栈。要显示视图控制器,您可以:
(a)让导航控制器按下新视图控制器 堆栈(pushViewController:animated:);
(b)在视图控制器堆栈中存在顶视图控制器 新视图控制器modally(presentViewController:animated:completion :),或;
(c)将新视图控制器添加到视图控制器堆栈数组中 通过将新的viewControllers数组分配给导航来手动完成 controller的viewControllers属性(setViewControllers:)。