相关疑难解决方法(0)

在将“ NavigationLink”放入“ NavigationView”中的“ navigationBarItems”内部后,为什么向后导航时我的SwiftUI应用会崩溃?

最小的可重现示例(Xcode 11.2 beta,在Xcode 11.1中有效):

struct Parent: View {
    var body: some View {
        NavigationView {
            Text("Hello World")
                .navigationBarItems(
                    trailing: NavigationLink(destination: Child(), label: { Text("Next") })
                )
        }
    }
}

struct Child: View {
    @Environment(\.presentationMode) var presentation
    var body: some View {
        Text("Hello, World!")
            .navigationBarItems(
                leading: Button(
                    action: {
                        self.presentation.wrappedValue.dismiss()
                    },
                    label: { Text("Back") }
                )
            )
    }
}

struct ContentView: View {
    var body: some View {
        Parent()
    }
}
Run Code Online (Sandbox Code Playgroud)

问题似乎在于将我放置NavigationLinknavigationBarItems嵌套于SwiftUI视图(其根视图为)的修改器内部NavigationView。崩溃报告表明,当我向前导航Child然后返回时,我试图弹出一个不存在的视图控制器Parent …

uinavigationcontroller ios swift swiftui xcode11.2

34
推荐指数
4
解决办法
1814
查看次数

SwiftUI:NavigationLink如果不在列表中,将无法正常工作

我想这可能是Beta 3中的一个错误,因为NavigationView都坏了。但是这样的观点:

struct GenreBadge : View {
    @EnvironmentObject var store: Store<AppState>
    let genre: Genre

    var body: some View {
        NavigationLink(destination: MoviesGenreList(genre: genre).environmentObject(store)) {
            RoundedBadge(text: genre.name)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

没有触发导航堆栈中的任何推送。该视图似乎根本不是交互式的。如果有人发现解决方法会很好,除非Apple记录了此行为,否则我认为它会在Beta 4之前失效。

swift swiftui

6
推荐指数
2
解决办法
2546
查看次数

从堆栈中解散目的地后,SwiftUI 导航链接不起作用

我以前没有注意到这一点,所以这可能是新版本的错误。

当我单击 NavigationLink 时,一切都按预期工作。然后我可以单击后退按钮(我已经使用默认后退按钮和自定义后退按钮完成了)并且它仍然有效。如果我再次尝试单击同一个 NavigationLink,它不会触发目的地。我可以单击不同的 NavigationLink,它会起作用,当我返回时,第一个链接再次起作用。只有最后一个链接不可用。

在列表、表单和免费导航链接中似乎就是这种情况。

有没有人遇到过这个功能?有解决办法吗?

使用 Xcode 版本 11.3 (11C29)

感谢您的帮助。

swiftui-navigationlink

5
推荐指数
1
解决办法
2016
查看次数