C.A*_*lar 100 navigation xcode ios swiftui navigationlink
我正在开发一个登录应用程序,登录后列出了类别。在每个类别下都有一些水平列出的项目。事情是登录后,主页面出现,一切都列出来了。当您单击一个项目时,它会进入详细屏幕,但是当您尝试返回时,它只会崩溃。我发现了这个流程为什么我的 SwiftUI 应用程序在“NavigationView”中的“navigationBarItems”内放置“NavigationLink”后向后导航时会崩溃?但我无法解决我的问题。由于我的项目变得复杂,我只想在swiftui中练习导航并创建了一个新项目。顺便说一下,我下载了最新的 xcode 版本 11.3。我写了一个简单的代码如下:
NavigationView{
NavigationLink(destination: Test()) {
Text("Show Detail View")
}
.navigationBarTitle("title1")
Run Code Online (Sandbox Code Playgroud)
而 Test() 视图如下:
import SwiftUI
struct Test: View {
var body: some View {
Text("Hello, World!")
}
}
struct Test_Previews: PreviewProvider {
static var previews: some View {
Test()
}
}
Run Code Online (Sandbox Code Playgroud)
如您所见,这非常简单。我也在互联网上尝试过类似的例子,但它并没有像它想象的那样工作。当我运行该项目时,我单击导航链接并导航到 Test() 视图。然后我点击后退按钮,它导航到主页。但是,当我第二次单击导航链接时,没有任何反应。导航链接只工作一次,之后什么也没有发生。它不导航,也不抛出任何错误。我是 swiftui 的新手,除了导航之外,一切都很棒。我在互联网上尝试了很多示例和建议的解决方案,但似乎没有任何解决方案可以解决我的问题。
Sag*_*age 64
[更新] 2020 年 11 月 5 日 - pawello2222表示此问题已在 Xcode 12.1 中修复。
[更新] 2020 年 6 月 14 日 - Quang Hà表示此问题已在 Xcode 11.5 中重现。
[更新] 2020 年 2 月 12 日 - 我在 Xcode 11.4 beta 中检查了此问题,发现此问题已解决。
当我在 Xcode 的模拟器中测试它时,我在我的项目中也遇到了同样的问题。但是,当我在真实设备(带有 iOS 13.3 的 iPhone X)上启动该应用程序时,NavigationLink它运行良好。所以,它确实看起来像是 Xcode 的错误。
模拟器 11.4:此问题已修复
您需要isActive在第二个视图中重置默认值。它适用于设备和模拟器。
struct NavigationViewDemo: View {
@State var isActive = false
var body: some View {
NavigationView {
VStack {
Text("View1")
NavigationLink(
destination: NavigationViewDemo_View2(isActive: $isActive),
isActive: $isActive,
label: { Button(action: { self.isActive = true }, label: { Text("click") }) })
}
}
}
}
struct NavigationViewDemo_View2: View {
@Binding var isActive: Bool
var body: some View {
Text("View2")
.navigationBarItems(leading: Button(action: { self.isActive = false }, label: { Text("Back") }))
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14639 次 |
| 最近记录: |