项目是这样的:
在AppDelegate里面注册ViewController和url的对应。
第一屏,上面有不同的登陆方式按钮,点击一个用账号登陆的按钮,实际是用的openURL,然后顺利弹出一个带有用户名、密码表单和一个“登陆”按钮,这个View上面的navigator上是有后退按钮的。
在登陆页面上输入用户名、密码,然后点登陆按钮,登陆验证成功,然后openURL出一个新的带有底部Tabbar的View,这个view上面的navigator不应该再有回退按钮。
问题:
我在带有tabbar的view中隐藏了回退按钮,并且把left按钮给设置成nil。但是完全不管用。所以有一下猜想,也就是问题:
是不是应该在登陆按钮按下后,跳出新view不应该再用openURL了,而是用一种新的弹出方式,navigator需要在新的viewcontroller中重新注册并生成实例? 另外是不是我可能对URLManager使用错了?
按照你描述的逻辑,最好是替换window的rootController来实现,最后一个应该使用TabbarController来,而不仅仅是一个ViewController。前面那些登录用的在登录后就全部释放了,不占内存,逻辑更清晰。
这个跟URLManager无关,新版本SDK的NavigationItem有一个很诡异的地方,当barItem是nil的时候,就直接取默认。所以你要这样做:
可以写在ViewDidLoad里,也可以写在 openedFromViewControllerWithURL: 里