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

Mar*_*ark 12 xcode xcode15 ios17

我将 Xcode 更新到 15.0 并运行应用程序。当在 iOS 17 上运行应用程序时,我的应用程序崩溃并出现以下错误:

\n
\n

-[UINavigationBar layoutSubviews] 中的断言失败,UINavigationBar.m:3\xc2\xa0849 'NSInternalInconsistencyException',原因:'请求可见导航栏的布局

\n
\n

它仅发生在带有 Xcode 15.0 的 iOS 17 上。对于 Xcode 14.3 和 iOS 17 - 没有。对于 Xcode 15 和 iOS 16.4 - 没有。

\n
\n

*** 由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“请求可见导航栏的布局,<UINavigationBar:0x15bd34ee0;帧=(0 47;428 44);自动调整大小=W;色调颜色 = UIExtendedGrayColorSpace 0 1; Layer = <CALayer: 0x2813b9f40>> delegate=0x15c049e00 standardAppearance=0x2837b03c0 rollEdgeAppearance=0x2837b02a0 compactAppearance=0x2837b0540 compactScrollEdgeAppearance=0x2837b0240,当顶部项目属于不同的导航栏时。topItem = <UINavigationItem: 0x15bf26070> titleView=0x160f04840 style=navigator backBarButtonItem=0x15bf5f4d0 rightBarButtonItems=0x281c93f90,导航栏 = <UINavigationBar: 0x15bd05d60; 帧=(0 47;428 44);自动调整大小=W;色调颜色 = UIExtendedGrayColorSpace 0 1; 层 = <CALayer: 0x2813be380>> delegate=0x15c056800 standardAppearance=0x2837fd5c0 rollEdgeAppearance=0x2837fd7a0 CompactAppearance=0x2837fd080 CompactScrollEdgeAppearance=0x2837ff780,可能来自客户端尝试嵌套包装的导航控制器。

\n
\n

需要帮忙 :)

\n

我已经设置navigationController?.setNavigationBarHidden(true, animated: false)viewWillLayoutSubviews(),但没有帮助

\n

小智 7

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


Mar*_*ark 0

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

self.navigationController?.setNavigationBarHidden(false, animated: animated)
Run Code Online (Sandbox Code Playgroud)

您只需删除/评论

  • 我将此行移至viewWillLayoutSubviews但这没有帮助
  • 我写setNeedsLayout()了,layoutIfNeeded()但这也
    没有帮助