Day15:SwiftUI—TabView

前言

前面两篇介绍了 List、ForEach、ScrollView、Navigation,
这篇文章继续介绍 SwiftUI 的内容,
今天来研究 TabView。

实作

  • 打开一个新的专案:

    删除 .padding() 把 text 放入 TabView 里面:


    会发现 preview 下方栏位出现了一个标签栏,
    现在标签栏没有内容。
    然後我们使用 tabItem 填入内容并更改 text:


    这是我们的第一个 TabView,
    再来宣告第二个:



    通过 TabView 实现多个选项卡界面很简单,
    接下来讨论下更多功能。
  • 追踪当前的选项卡
    宣告一个变数来追踪当前选择的选项卡:
@State var tabIndex = 0

并在 TabView 中传入变数 tabIndex 跟踪状态:

当变数 tabIndex 更改时,
引用该变数的 view code 都会检测到更改然後自动更新 UI。
在 TabView 中,使用者可以通过切换两个选项界面进行交互产生数据,
所以带入 TabView 中的参数 tabIndex 更改时,

@State var tabIndex = 0

也应该随之更改。
所以这是一种双向的绑定关系,
我们通过在带入 TabView 中的参数 tabIndex 前添加 $ 完成绑定,
并且在不同 tabview 上添加 tag() 来区分:

打开 simulator:

打开专案,默认进入 tab1。


<<:  Day15# Goroutines

>>:  Day 29:「欸!你填一下这张表!」- 弹跳视窗、Modal

Day 32:来呼叫星战 Profile List 下一页吧(1/2)

在 Day 31 分享 RecyclerView 如何载入更多之後,先来帮大家回顾之前星战的 Pro...

Day8-"运算子"

比较运算子,运算结果会是布林值,也就是说答案为真时会显示1,若答案为否时会显示0。 逻辑运算子,仍然...

Ruby基本介绍(四)

基本上大叔宅男不是很想放男团K-pop, XD 本篇会提到的 定义方法 回圈(loop) 定义方法 ...

[Day 6] Vue的数据与方法(2)

一直很犹豫要不要把今天这篇和昨天那篇合在一起,最後还是分开了( ̄3 ̄)╭,觉得分开整体看起来比较统一...

Day 8 - Kotlin的回圈(上)

Day 8 - Kotlin的回圈(上) Kotlin的回圈我会分两天来讲,今天我们会讲for的部分...