【问题标题】:In SwiftUI, how can I put the navigation bar in the inner view?在 SwiftUI 中,如何将导航栏放在内部视图中?
【发布时间】:2021-04-27 12:40:31
【问题描述】:

在 SwiftUI 中,我想实现以下视图。但是我不知道如何将导航栏放在里面的白色视图中。因为它默认放置在紫色视图之上。

import SwiftUI

struct ContentView: View {
    var body: some View {
        ZStack {
        Color.purple
            WhiteView() // the white view
                .padding(.top, 30)
                .padding()
        }
        .edgesIgnoringSafeArea(.all)
    }
}
import SwiftUI

struct WhiteView: View {
    var body: some View {
        Color.white
        .cornerRadius (12)
    }
}

struct WhiteView_Previews: PreviewProvider {
    static var previews: some View {
        WhiteView()
    }
}

【问题讨论】:

    标签: swift swiftui


    【解决方案1】:

    这是一种可能的方法 - 在彩色视图上使用 NavigationView,因此它需要父视图的框架而不是全屏

    使用 Xcode 12.4 / iOS 14.4 测试

    struct WhiteView: View {
        var body: some View {
            Color.white
            .overlay(NavigationView {
                    NavigationLink("Test", destination: Text("Details"))
                })
            .cornerRadius (12)
        }
    }
    

    【讨论】:

      【解决方案2】:

      我拿走了你的代码,把它放在NavigationView 中,添加了.navigationTitle.toolbarToolBarItem,这是我得到的视图:

      代码:

      import SwiftUI
      
      struct ContentView: View {
          var body: some View {
              NavigationView {
                  ZStack {
                      Color.purple
                      WhiteView() // the white view
                          .padding(.top, 30)
                          .padding()
                  }
                  .edgesIgnoringSafeArea(.all)
                  .navigationTitle("Your Friends")
                  .toolbar {
                      ToolbarItem {
                          Text("Right Button")
                      }
                  }
              }
          }
      }
      
      struct ContentView_Previews: PreviewProvider {
          static var previews: some View {
              ContentView()
          }
      }
      
      struct WhiteView: View {
          var body: some View {
              Color.white
                  .cornerRadius (12)
              
          }
      }
      

      什么,您的问题/问题到底是什么?一切都在白色区域。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-09-30
        • 2019-11-23
        • 1970-01-01
        • 2019-11-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多