- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController: (UIViewController *)viewController{
if (viewController == _personalNavViewCtrl) {
AppDelegate *delegate = (AppDelegate*)[UIApplication sharedApplication].delegate;
if (delegate.uid == nil) {//账户没有登陆过
if (_loginViewCtrl == nil) {
_loginViewCtrl = [[LoginViewCtrl alloc] init];
}
NSLog(@"_personalNavViewCtrl.ViewCtrl:%@",_personalNavViewCtrl.viewControllers);
if (_personalNavViewCtrl.topViewController != _loginViewCtrl) {
[_personalNavViewCtrl pushViewController:_loginViewCtrl animated:NO];
}
}
}
}
以上是关键代码。代码中包含UITabBarController
,其中UINavigationController
,其项目为4.当我触摸item4时,我想推送另一个UIViewController
通过一些juge。因此当当前项目为3时,当我触摸item4时,它就可以了。但是当当前项目为4时,我再次触摸item4,我发现了这个问题。我发现UINavigationController
viewControllers
只是rootViewController,我推的那个被解雇了。另一个:日志告诉我:1,嵌套推送动画可能导致导航栏2损坏,完成导航转变为意外状态。 NavigationBar
子视图树可能已损坏。
我不知道为什么。
答案 0 :(得分:0)
方法1:
使用
- (void)presentViewController:(UIViewController *)viewControllerToPresent
animated:(BOOL)flag
completion:(void (^)(void))completion
展示您的_loginViewCtrl
方法2:
测试是否登录
- (BOOL)tabBarController:(UITabBarController *)tabBarController
shouldSelectViewController:(UIViewController *)viewController