SwiftUI——如何使用新的NavigationStack和NavigationSplitView(如何页面跳转2.0以及如何制作侧栏)

这篇具有很好参考价值的文章主要介绍了SwiftUI——如何使用新的NavigationStack和NavigationSplitView(如何页面跳转2.0以及如何制作侧栏)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

从 iOS 16 开始,苹果开始弃用原先的NavigationView,以后会逐渐完全淘汰掉。现在开始使用NavigationStackNavigationSplitViewNavigationStack的效果和原本的NavigationView一样,而NavigationSplitView则和现在 iPadOS 上的NavigationView效果一样。
最近在 iPadOS 上面使用NavigationView,内容会放在侧栏,而不是像 iOS 或者以前一样。如下:SwiftUI——如何使用新的NavigationStack和NavigationSplitView(如何页面跳转2.0以及如何制作侧栏)

苹果这次改名的目的应该是为了区别两种导航模式,怕开发者不好理解区分。
那么下面来介绍一下二者。

NavigationStack

NavigationStack的使用方法和NavigationView一模一样,只要改一下名字即可,更新代码很方便:

NavigationStack {
	NavigationLink...
}

唯一需要注意的是:只支持 iOS 16 及更新的系统。所以代码修改的时候应该改成以下格式,不然程序只能支持 iOS 16 及更新的代码了:

if #available(iOS 16.0, *) {
	//新版代码
	
} else {
	//兼容早期系统
	
}

顺道一提,NavigationStack等价于被遗弃的NavigationView的下面这种设置:

NavigationView {
    NavigationLink...
}
.navigationViewStyle(.stack)

NavigationSplitView

NavigationSplitView是新出来的,目的是方便开发者实现侧栏。事实上也真的很方便。

代码格式如下:

NavigationSplitView {
    //侧栏第一列
} content: {
    //侧栏第二列
} detail: {
    //页面
}

例如下面这段代码的样式如下:

NavigationSplitView {
	Text("1")
} content: {
	Text("2")
} detail: {
	Text("3")
}

横屏样式如下:
SwiftUI——如何使用新的NavigationStack和NavigationSplitView(如何页面跳转2.0以及如何制作侧栏)
竖屏样式如下:
SwiftUI——如何使用新的NavigationStack和NavigationSplitView(如何页面跳转2.0以及如何制作侧栏)
接下来通过下面的代码来讲一下新NavigationSplitView的数据流:

struct MainView: View {
    let colors: [Color] = [.purple, .pink, .orange]
    @State private var selection: Color? = nil // 默认没有选中的颜色
    var body: some View {
        NavigationSplitView {
                List(colors, id: \.self, selection: $selection) { color in
                    NavigationLink(color.description, value: color)
                }
            } detail: {
                if let color = selection {
                    Rectangle()
                        .foregroundColor(color)
                } else {
                    Text("Pick a color")
                }
            }
    }
}

此时显示效果如下:
SwiftUI——如何使用新的NavigationStack和NavigationSplitView(如何页面跳转2.0以及如何制作侧栏)
下面点击“pink”看看:
SwiftUI——如何使用新的NavigationStack和NavigationSplitView(如何页面跳转2.0以及如何制作侧栏)

希望能帮到有需要的人~文章来源地址https://www.toymoban.com/news/detail-442764.html

到了这里,关于SwiftUI——如何使用新的NavigationStack和NavigationSplitView(如何页面跳转2.0以及如何制作侧栏)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何在 SwiftUI 中配置 SwiftData

    在 WWDC 2023 上,Apple 宣布了一个备受期待的新持久性刷新,以一种新的框架形式出现:SwiftData。SwiftData 从 iOS 17 开始提供,允许使用 Swift 类型对应用程序的持久性数据进行建模,并以类型安全和声明性的方式执行 CRUD 操作。 在本文中,将展示如何配置 SwiftData 用于一个 Swift

    2024年02月13日
    浏览(49)
  • 如何在 SwiftUI 中实现音频图表

    在可访问性方面,图表是复杂的事物之一。iOS 15 引入了一项名为“音频图表”的新功能。 下面我们将学习如何通过使用 accessibilityChartDescriptor 视图修饰符为任何 SwiftUI 视图构建音频表示,呈现类似自定义条形图视图或图像的图表。 让我们从在 SwiftUI 中构建一个简单的条形图

    2024年01月22日
    浏览(38)
  • Pandas教程:如何使用insert函数向Dataframe指定位置插入新的数据列(Python)

    Pandas教程:如何使用insert函数向Dataframe指定位置插入新的数据列(Python) Pandas是Python中最流行的数据处理和分析库之一。在数据分析过程中,有时候需要在Dataframe中插入新的数据列。在本教程中,我们将介绍如何使用Pandas的insert函数在指定位置插入新的数据列。 首先,我们

    2024年02月11日
    浏览(41)
  • 在微信小程序中打开的页面不能超过10个,达到10个页面后,就不能再打开新的页面

    微信小程序路由跳转有个隐藏的坑,就是  wx.navigateTo 打开新页面,最多只能打开10个,超过10个之后就没反应,控制台也不会报错。 小程序路由跳转的方式有五种,分别是wx.navigateTo(打开新页面,新页面入栈)、wx.redirectTo(重定向,当前页面出栈,新页面入栈)、wx.naviga

    2023年04月08日
    浏览(43)
  • 如何使用Sentinel的Slot插槽实现限流熔断,看完这篇文章会有新的收获

    前言:大家好,我是小威,24届毕业生,在一家满意的公司实习。本篇文章将详细介绍如何使用Sentinel的Slot插槽实现限流熔断,后续文章将详细介绍Sentinel的其他知识。 如果文章有什么需要改进的地方还请大佬不吝赐教 👏👏。 小威在此先感谢各位大佬啦~~🤞🤞 🏠个人主页

    2024年02月07日
    浏览(52)
  • vue2引入Element UI组件去创建新的页面的详细步骤

    目录 一、Element UI介绍 Element UI的特点: 二、下载配置Element UI (零)创建vue项目 (一)下载Element UI依赖   (二)全局文件main.js中引入Element UI 三、删除多余的东西  (一)删除App.vue多余的  (二)删除多余的页面  (三)删除router路由多余的  四、新建vue页面 (一)新建

    2024年02月14日
    浏览(33)
  • 如何将自定义字体添加到 iOS 应用程序(SwiftUI + 得意黑)

    Xcode Version 14.3 (14E222b) SwiftUI 得意黑 Smiley Sans https://github.com/atelier-anchor/smiley-sans/releases https://sarunw.com/posts/how-to-add-custom-fonts-to-ios-app/ 熊猫小账本 一个简洁的记账 App,用于记录日常消费开支收入,使用 iCloud 保存同步数据。 支持备注,自定义时间偶尔忘记记账也没关系。 搜索

    2024年02月13日
    浏览(61)
  • SwiftUI 如何保证 Text 中字符数量相等的字符串显示宽度一定相同?

    在 SwiftUI 中我们往往需要将内容相似的字符串展列出来给用户比较,这些字符串内容各有不同但字符数量始终是相等的,我们希望它们的显示宽度始终保持一致: 如上图所示:即使是等宽字符组成的字符串在字符数量相等时它们的显示宽度仍然可能不一致。但演示中最底部的

    2024年01月17日
    浏览(40)
  • 新的网络钓鱼即服务平台让网络犯罪分子生成令人信服的网络钓鱼页面

    至少从2022年中期开始,网络犯罪分子就利用一个名为“伟大”的新型网络钓鱼即服务(PhaaS或PaaS)平台来攻击微软365云服务的企业用户,有效地降低了网络钓鱼攻击的门槛。 思科Talos研究员蒂亚戈·佩雷拉表示:“目前,Greatness只专注于微软365钓鱼页面,为其附属公司提供附件和

    2024年02月05日
    浏览(43)
  • SwiftUI 中List动态列表容器视图的使用方法

    List  是 SwiftUI 中用于显示动态列表的容器视图。它接受一个或多个子视图,并根据提供的数据动态生成对应的列表项。 下面是  List  的常见用法和一些常用的参数: 基本用法: 在这个例子中, List  包含了三个  Text  视图作为列表项。 使用  ForEach  进行动态列表生成:  

    2024年02月07日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包