美文网首页SwiftUI
SwiftUI一起学之一 -- NavigationView

SwiftUI一起学之一 -- NavigationView

作者: sunny_ke_ke | 来源:发表于2021-01-29 09:52 被阅读0次

    SwiftUI一起学之一 -- NavigationView

    一 NavigationView

    对应UIKit中的UINavigationController。如果想拥有导航到别的控制器的能力,页面必须包裹进NavigationView中

    1.1 导航栏标题

    NavigationView{
       Text("Hello World!")
       .navigationBarTitle("标题")
    }
    

    1.2 导航栏样式

    displayModeTitleDisplayMode枚举的值,它有三种值:

    • automatic:从前一个导航栏继承显示模式
    • inline:展示标准导航条的title样式
    • large:即系统默认的样式,居左大标题
    1. inline 标准导航条的title样式
    NavigationView{
       Text("Hello World!")
       .navigationBarTitle("标题",displayMode: .inline)
    }
    
    image.pngimage.png
    1. 即系统默认的样式,居左大标题, 当页面向上滚动时标题会自动运动到导航栏正中位置
    image.pngimage.png

    1.3 导航栏左右按钮

    NavigationView{
        Text("Hello World")
        .navigationBarTitle("标题",displayMode: .inline)
        .navigationBarItems(leading: Button("左按钮"){
            print("点击了左按钮")
        }, trailing: Button("右按钮"){
            print("点击了右按钮")
        })
    }
    
    image.pngimage.png

    1.4 页面跳转和传参

    1. 跳转下一页面
    NavigationView{
        NavigationLink(destination: NextPageView()) {
            Text("下一页面")
        }
        .navigationBarTitle("标题",displayMode: .inline)
    }
    
    1. 传参数
    NavigationView{
        NavigationLink(destination: NextPageView(param: "我是参数")) {
            Text("下一页面")
        }
        .navigationBarTitle("标题",displayMode: .inline)
    }
    
    struct NextPageView: View {
        var param:String 
        
        var body: some View {
            Text("我是下一页 我是上一页参数\(param)")
        }
    }
    
    1. 通过代码自动跳转, 使用isActive进行自动跳转子页面
    @State var isActive = false
        
    var body: some View {
        NavigationView{
            VStack {
                NavigationLink(destination: NextPageView(param: "我是参数"), isActive: $isActive) {
                    Text("跳转")
                }
                Spacer().frame(width: 1, height: 20, alignment: .center)
                Button("自动跳转") {
                    print(self.isActive)
                    self.isActive = true
                }
            }
            .navigationBarTitle("标题",displayMode: .inline)
            .navigationBarItems(leading: Button("左按钮"){
                print("点击了左按钮")
            }, trailing: Button("右按钮"){
                print("点击了右按钮")
            })
        }
    }
    

    参考:

    1. http://www.cocoachina.com/articles/898568
    2. 小组件
    3. SwiftUi Demo
    4. SwiftUI系列之七--NavigationView, TabbedView, Group介绍
    5. SwiftUI:NavigationView

    相关文章

      网友评论

        本文标题:SwiftUI一起学之一 -- NavigationView

        本文链接:https://www.haomeiwen.com/subject/mtxqtltx.html