Closed pingcoder0505 closed 6 years ago
你的根控制器的当前显示的viewcontroller没有UINavigationController。。。你用cw_pushViewController这个方法 是找到根控制器当前选中的导航栏去push的。没有导航控制器没法push,你可以使用present。或者如果添加了一个导航栏是添加在侧滑出来的抽屉上面的,那你看看这个里面的解决方式是否符合你:https://github.com/ChavezChen/CWLateralSlide/issues/19
void(^loginOutBlock)() = ^{
BSLoginViewController *login = [[BSLoginViewController alloc] init];
[self cw_pushViewController:login];
};
[BSHTTPLogin POSTXXXData:dic finished:^(id responseObject) {
loginOutBlock();
} fail:^(NSInteger code, NSString *error) {
loginOutBlock();
}];
这样不行,可是在-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath这个方法里是可以的,而且还是有UINavigationController的
看看是不是在子线程调用的
我放了主线程也不行,都会提示This no UINavigationController...这个!但是这个确实应该是有吧?或者没有的话我怎么给他加啊??我试着加了也不管用
要是没有的话那我didSelectRowAtIndexPath这个方法也不行啊! -(void)tableView:(UITableView )tableView didSelectRowAtIndexPath:(NSIndexPath )indexPath { // 测试 // UIViewController *vc = [[UIViewController alloc]init]; // vc.view.backgroundColor = [UIColor redColor]; // [self cw_pushViewController:vc]; } 可是这样写可以
前面提供的两个都是在同一个控制器测试的嘛?提供一个测试demo 或者加我QQ或者微信详聊吧(543438338)。这里不太好定位问题哦。
ok了,我又在你的里边加了个方法,如果传的是viewcontroller的话我直接把UINavigationController这个传过去了!- (void)cw_pushViewController:(UIViewController *)viewController{
[self cw_pushWithNavigationVC:nil ViewController:viewController];
}
(void)cw_pushWithNavigationVC:(UINavigationController )nav ViewController:(UIViewController )viewController{
UIViewController *rootVC = [UIApplication sharedApplication].keyWindow.rootViewController;
if ([rootVC isKindOfClass:[UITabBarController class]]) { UITabBarController tabbar = (UITabBarController )rootVC; NSInteger index = tabbar.selectedIndex; nav = tabbar.childViewControllers[index];
}else if ([rootVC isKindOfClass:[UINavigationController class]]) {
nav = (UINavigationController *)rootVC;
}else if ([rootVC isKindOfClass:[UIViewController class]]) { NSLog(@"This no UINavigationController..."); nav = nav; // return; }
[self dismissViewControllerAnimated:YES completion:nil];
[nav pushViewController:viewController animated:NO];
}
好的👍
我push告我This no UINavigationController... 但是我alloc一个UINavigationController再用cw_pushViewController push的话还是push不了,怎么解决?