ios 13 SwiftUI向后导航时如何避免导航视图内的TabView应用崩溃

Posted

技术标签:

【中文标题】ios 13 SwiftUI向后导航时如何避免导航视图内的TabView应用崩溃【英文标题】:How to avoid app crash with TabView inside NavigationView when navigate backwards ios 13 SwiftUI 【发布时间】:2020-12-22 16:05:40 【问题描述】:

我在 NavigationView 中使用 TabView,但是当我尝试向后导航时我的应用程序崩溃,它在 AppDelegate 类中显示此错误消息“线程 1:EXC_BAD_ACCESS (code=2, address=0x16ad5bff0)”。在 ios 14 设备中它工作正常,但在 ios 13 上崩溃。我认为这是 ios 13 中的 navigationView 问题。我正在寻找 iOS 13 中的替代方案并避免崩溃。

PS:我使用的是 xcode 12。

【问题讨论】:

【参考方案1】:

自从 SwiftUI 启动以来,在 NavigationView 中嵌套 TabView 一直是个问题。最干净的解决方法是创建视图“视图层”。看看这个答案,让您了解它们的工作原理。

Pure SwiftUI login, signup, register flow, is it possible?

您可以在 SwiftUI 中使用感觉自然的分层来做很多事情。看看吧,如果您有任何问题,请告诉我!

【讨论】:

我很困惑,你能解释一下吗? 你实际上是在 swiftui 中创建一个包装视图,它在视图层次结构中执行比传递给它的内容更高级别的操作。这使您能够控制何时显示下一层(或传递给它的内容)。您还可以通过环境或您喜欢的任何方式将在该包装器中创建的重要信息传递给视图层次结构中较低的视图。这使您能够执行很多操作,例如显示叠加视图或返回身份验证屏幕。你真的有很大的灵活性。 它对我不起作用。请参阅此链接 [***.com/questions/63074464/… 这是我最初的问题,我有一个解决方案,但是当我更新 xcode 时,我可以再回到第一个视图。有什么想法吗?

以上是关于ios 13 SwiftUI向后导航时如何避免导航视图内的TabView应用崩溃的主要内容,如果未能解决你的问题,请参考以下文章

向后滑动失败时,SwiftUI 导航栏项目变得混乱

SwiftUI:在 iOS 14 上点击返回时导航链接崩溃,但在 iOS 13 上没有

为啥我的 SwiftUI 应用程序在 `NavigationView` 中的 `navigationBarItems` 内放置 `NavigationLink` 后向后导航时崩溃?

SwiftUI PageView iOS 13 - 导航链接未按预期工作

IOS ViewController 导航路径 - 如何以编程方式向后导航

SwiftUI (1.0) 中的导航问题