swift “NSInternalInconsistencyException”,原因:'布局请求可见导航栏Xcode 15.0崩溃

qqrboqgw  于 2023-10-15  发布在  Swift
关注(0)|答案(3)|浏览(288)

我将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),但没有帮助

d7v8vwbk

d7v8vwbk1#

我也遇到了同样的问题,原因在UISplitViewController的委托中:在splitViewController(_:collapseSecondary:onto:)中,当我将视图控制器从辅助导航控制器移动到主控制器时,我没有将它们从辅助导航控制器中删除。当我开始删除它们时,崩溃已经消失了。因此,请尝试检查更改视图控制器的父控件的位置。

iecba09b

iecba09b2#

在我删除/评论这一行后,崩溃已经消失了。

self.navigationController?.setNavigationBarHidden(false, animated: animated)

您只需要删除/评论

  • 我把这一行移到了viewWillLayoutSubviews,但这并没有帮助。
  • 我写了setNeedsLayout()layoutIfNeeded()
    没有帮助
fiei3ece

fiei3ece3#

你需要提出:[self setNavigationBarHidden:YES animated:NO];如果您自定义NavigationBar,因为xcode 15执行时间提前

相关问题