Tencent / QMUI_iOS

QMUI iOS——致力于提高项目 UI 开发效率的解决方案
http://qmuiteam.com/ios
Other
7.05k stars 1.37k forks source link

纯代码开发,window!.rootViewController = UINavigationController(rootViewController: MainController()) 方式跳转,项目崩溃 #1528

Open tikejc opened 9 months ago

tikejc commented 9 months ago

1、MainController 实现了UITabBarController class MainController: UITabBarController { } 2、QMUIKit:版本号:4.7.0

3、AppDelegate类里直接跳转到MainController(使用的是UINavigationController方式跳转) window = UIWindow(frame: UIScreen.main.bounds) window!.rootViewController = UINavigationController(rootViewController: MainController()) window!.makeKeyAndVisible()

4、项目直接崩溃,出错位置:UINavigationController+QMUI.m 类 203行: if (!willPushActually) { QMUIAssert(NO, @"UINavigationController (QMUI)", @"调用了 pushViewController 但实际上没 push 成功,viewController:%@", viewController); callSuperBlock(); return; }

这个怎么解决????

MoLice commented 8 months ago

当 vc 为 UITabBarController 时,willPushActually 为 NO,所以命中了 assert。

虽然不推荐将 UITabBarController 作为 UINavigationController 的 childViewController 来使用,但也不能说这么用就是错的,所以后续会把这个判断条件去除。目前建议先本地注释掉。

JYHang commented 4 months ago

同样遇到了这个问题,将 UITabBarController 作为 UINavigationController 的 childViewController 有的场景更为灵活一些,没必要加![viewController isKindOfClass:UITabBarController.class]这个判断