SwiftUI 跳转到新页面(NavigationLink、fullScreenCover、Link) ...

打印 上一主题 下一主题

主题 817|帖子 817|积分 2451

前言

  1. xcode 13.3
  2. iOS 15.2
复制代码
一、 push跳转

添加跳转时间,首先你要在 NavigationView 中包含的代码,只要在vc的body中,把代码放到 NavigationView 就可以了
1、button 跳转(此处是转化成 Text、Image)

文字button
  1. Button("登录/注册") { //文字
  2.     print("登录/注册")                //点击事件
  3. }
复制代码
添加跳转事件,YLMySetting是我的要跳转的页面,destination下只要是一个 View就可以跳转,你也可以写一个Text("???")
此处是把纯文字的Button转化为Text再添加的跳转事件
  1. NavigationLink {
  2.     YLMySetting() //此处为跳转时间,只要是一个view可以跳转过去
  3. } label: {
  4.     Text("登录/注册")
  5. }
复制代码
图片button
此处是把纯图片的Button转化为Image再添加的跳转事件
  1. Button {
  2.     print("setting") //点击事件
  3. } label: {
  4.     Image("mine_set") //图片
  5. }
复制代码
添加跳转事件
  1. NavigationLink {
  2.     YLMySetting()
  3. } label: {
  4.     Image("mine_set")
  5. }
复制代码
2、List 中row 点击跳转

这块苹果的官方文档中、demo中都有详细说明
  1. NavigationLink {
  2.     YLMySetting()
  3. } label: {
  4.     YLMineRow(model: models[index]) //此处为row展示
  5. }
复制代码
3 push 自定义返回

  1. @Environment(\.presentationMode) var presentationMode: Binding<PresentationMode>
复制代码
在Button按钮点击事件或者tap中添加 presentationMode.wrappedValue.dismiss() 返回上一页
  1.     var body: some View {
  2.         Button(action: {
  3.             presentationMode.wrappedValue.dismiss()
  4.         }, label: {
  5.             Text("返回")
  6.         })
  7.     }
复制代码
二、presented跳转

1、要跳转的页面设置

给定一个为false的监控值
  1.     @State var settingPagePresented: Bool = false
复制代码
给Text添加单击手势,设置监控值跳转
  1. Text("设置")
  2.     .fullScreenCover(isPresented: $settingPagePresented, content: {
  3.         YLMySetting(settingPagePresented: $settingPagePresented)
  4.     }).onTapGesture {
  5.         settingPagePresented = true
  6.     }
复制代码
2、跳转到的页面

添加绑定状态
  1.     @Binding var settingPagePresented: Bool
复制代码
添加返回按钮,点击返回上一页
  1. NavigationView {
  2.     Text("hello world")
  3.     .navigationTitle("设置")
  4.     .navigationBarItems(leading: Button(action: {
  5.         settingPagePresented = false
  6.     }, label: {
  7.         Image("icon_back")
  8.     }))
  9.     .navigationBarTitleDisplayMode(.inline)
  10. }
复制代码
三、跳转到 Safari 浏览器

使用 Link 可以跳转到 Safari浏览器,不过链接要添加上http,否则跳转不了
  1. Link(destination: URL(string: "https://www.baidu.com")!) {
  2.     Text("百度搜索")
  3. }
复制代码
总结

1、跳转方法,必须写在NavigationView 中
2、无论是button还是 Text 或者Image,添加跳转,都要把代码放到label中
3、button点击事件中,没能成功添加跳转事件、此处我都是把button 转化为Text 或者Image,有大佬知道怎么添加,请在评论区留言,非常感谢

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

科技颠覆者

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表