【问题标题】:Swift UI why do I have 2 back buttons?Swiftui 为什么我有 2 个后退按钮?
【发布时间】:2019-12-21 20:49:51
【问题描述】:

我正在尝试解决我的应用视图上有 2 个“后退按钮”的问题。这似乎在我导航两次后发生。一次从主屏幕创建帐户页面,然后再次从创建帐户页面到另一个页面。使用 NavigationView

我正在将此格式用于不同的页面。

struct CreateAccountViewGeo: View {
var body: some View {
    NavigationView{

        GeometryReader { (deviceSize: GeometryProxy) in
            ZStack{
 NavigationLink(destination: SportPreference(), tag: 1, selection: self.$current) {
                        EmptyView()
                    }
                    VStack (spacing: deviceSize.size.height * (20/812)){
                        Button(action: {
                            self.current = 1
                            print("Create tapped!")

                        }) {
                            Text("Create")
                                .fontWeight(.bold)
                                .foregroundColor(.orange)
                                .frame(width: deviceSize.size.width*(185/375), height: deviceSize.size.height*(50/812))
                                .cornerRadius(50)
                                .overlay(
                                    Capsule(style: .continuous)
                                        .stroke(Color.orange, style: StrokeStyle(lineWidth: 2)))
                                .frame(width: deviceSize.size.width, alignment: .center)

                        }//Close button for create
}
}
}
}

【问题讨论】:

    标签: swiftui navigationview


    【解决方案1】:

    你有不止一个NavigationView{...} 一些地方

    【讨论】:

    • 我在 3 个页面的顶部只有一个导航视图,所以我认为这不是问题
    • 您只需要一个位于主屏幕的导航视图。您不能在任何子视图中添加其他导航视图
    【解决方案2】:

    感谢 E.Coms。这是一个明显的例子:

    SwiftUI 视图1:

    var body: some View {
        NavigationView {
            List {
                ForEach(YOUR_ITEMS) { ITEM in
                    NavigationLink (destination: View2()) {
                        Text("GO TO VIEW 2")
                    }
                }
            }
         }
      }
    

    SwiftUI 视图2:

    var body: some View {
        VStack {
            List {
                ForEach(YOUR_ITEMS) { ITEM in
                    NavigationLink {
                        View3()
                    } label: {
                        Text("GO TO VIEW 3")
                    }
                }
            }
        }
    }
    

    所以 NavigationView {...} 应该只在您的第一个视图中声明,然后只需使用 NavigationLink。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-19
      • 2020-02-22
      相关资源
      最近更新 更多