我将Xcode更新到15.0并运行应用程序。当在iOS 17上运行应用程序时,我的应用程序崩溃并出现此错误:
在-[UINavigationBar layoutSubviews]中Assert失败,UINavigationBar.m:3 849“NSInternalInconsistencyException”,原因:'要求可见导航栏的布局
这只发生在iOS 17和Xcode 15.0上。在Xcode 14.3和iOS 17中,在Xcode 15和iOS 16.4中,没有。
- 由于未捕获的异常“NSInternalInconsistencyException”而终止应用,原因:'布局要求可见导航栏,<UINavigationBar:0x15bd34ee0; return(0; 428 44); autoresize = W; int color = 0 1; layer =<CALayer: 0x2813b9f40>> delegate= 0x 15 c 049 e00 standardAppearance= 0x 2837 b 03 c 0 scrollEdgeAppearance= 0x 2837 b 02 a0 compactAppearance= 0x 2837 b 0540 compactScrollEdgeAppearance= 0x 2837 b 0240,当顶部项目属于不同的导航栏时。topItem = <UINavigationItem: 0x15bf26070>titleView=0x160f04840 style=navigator backBarButtonItem=0x15bf5f4d0 rightBarButtonItems=0x281c93f90,navigation bar = <UINavigationBar:0x15bd05d60; return(0; 428 44); autoresize = W; int color = 0 1; layer =<CALayer: 0x2813be380>> delegate= 0x 15 c 056800 standardAppearance= 0x 2837 fd 5c 0 scrollEdgeAppearance= 0x 2837 fd 7a 0 compactAppearance= 0x 2837 fd 080 compactScrollEdgeAppearance= 0x 2837 ff 780,可能是客户端试图嵌套 Package 的导航控制器。
需要帮助:)
我已经在viewWillLayoutSubviews()
中设置了navigationController?.setNavigationBarHidden(true, animated: false)
,但没有帮助
3条答案
按热度按时间d7v8vwbk1#
我也遇到了同样的问题,原因在
UISplitViewController
的委托中:在splitViewController(_:collapseSecondary:onto:)
中,当我将视图控制器从辅助导航控制器移动到主控制器时,我没有将它们从辅助导航控制器中删除。当我开始删除它们时,崩溃已经消失了。因此,请尝试检查更改视图控制器的父控件的位置。iecba09b2#
在我删除/评论这一行后,崩溃已经消失了。
您只需要删除/评论
viewWillLayoutSubviews
,但这并没有帮助。setNeedsLayout()
和layoutIfNeeded()
,没有帮助
fiei3ece3#
你需要提出:[self setNavigationBarHidden:YES animated:NO];如果您自定义NavigationBar,因为xcode 15执行时间提前