【发布时间】:2019-12-13 20:00:33
【问题描述】:
我想以编程方式推送视图,而不是依赖 NavigationLink 提供的界面(例如,我想use a button with no chevron)。 correct way 是使用带有标签和选择的 NavigationLink 以及 EmptyView。
当我尝试使用以下代码推送视图时,它会在第一次推送视图时起作用:
struct PushExample: View {
@State private var pushedView: Int? = nil
var body: some View {
NavigationView {
VStack {
Form {
Button(action: { self.pushedView = 1 }) { Text("Push view") }
}
NavigationLink(destination: Text("Detail view"), tag: 1, selection: $pushedView) { EmptyView() }
}
}
}
}
但是,如果我点击视图上的后退按钮,然后再次尝试点击该按钮,它将不再推动视图。 这是因为值pushedView 再次设置为1,但它已经位于1。在弹出Detail view 时,没有什么可以将其重置回nil。
如何让后续点击按钮再次推送视图?
【问题讨论】:
-
按预期工作(点击返回
pushedView == nil后)。使用 Xcode 11.2 / iOS 13.2 测试。你使用 Xcode 11.3 吗?