错误的导航控制器序列导致空白导航栏

时间:2013-12-19 02:28:03

标签: ios button uinavigationcontroller uinavigationbar

我做错了什么,但不确定它是什么。贝娄是我的storyboard

的图表
                /----(push)----login   \
Start nav ctrl                          mainview nav ctrl 
                \----(modal) register  /

当用户登录时,appdelegate logindone会收到一个事件,在登录完成后我会这样做:

self.window.rootViewController = [self.window.rootViewController.storyboard instantiateViewControllerWithIdentifier:@"MainView"];

这很好用。

但是,如果用户通过注册并使用登录完成注册,则会触发相同的loginDone,但上面的代码会导致空白view

如果我用

替换上面的代码
UIStoryboard* storyBoard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:nil];
MainCtrl *mainViewController = (MainCtrl*)[storyBoard instantiateViewControllerWithIdentifier: @"MainView"];
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:mainViewController];
self.window.rootViewController =navigationController;

这几乎可以正常工作,视图显示正确,唯一的问题是导航栏是空白的,无论我走到哪里都会保持空白。重启应用程序当然是因为它绕过了寄存器控制器。

在寄存器中我在调用loginDone之前执行[self dismissViewControllerAnimated:NO completion:nil];,但这确实没有区别。 有什么建议吗?

修改

self.window.rootViewController = [self.window.rootViewController.storyboard
                                     instantiateViewControllerWithIdentifier:@"MainView"];

是唯一能在正常流程中工作的东西,即登录后。否则我会崩溃“不可用的segue”。

1 个答案:

答案 0 :(得分:0)

我修复它的方式并不完全是我想修复它的方式,但它有效。我不得不修改用于处理登录完成工作的登录完成功能,并转换到主视图,将参数传递给转换。返回时,我从注册视图触发segue到主视图。仍然不确定为什么它不按原来的方式工作。