首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从另一个视图- SwiftUI接收所选的TabView

,可以通过使用@State属性包装器来实现。@State属性包装器允许我们在视图之间共享和更新数据。

首先,我们需要在父视图中创建一个@State变量来存储所选的TabView索引。然后,我们可以将这个@State变量传递给子视图,并在子视图中使用它来获取所选的TabView索引。

下面是一个示例代码:

代码语言:txt
复制
import SwiftUI

struct ContentView: View {
    @State private var selectedTab = 0
    
    var body: some View {
        VStack {
            TabView(selection: $selectedTab) {
                Text("Tab 1")
                    .tabItem {
                        Image(systemName: "1.circle")
                        Text("Tab 1")
                    }
                    .tag(0)
                
                Text("Tab 2")
                    .tabItem {
                        Image(systemName: "2.circle")
                        Text("Tab 2")
                    }
                    .tag(1)
                
                Text("Tab 3")
                    .tabItem {
                        Image(systemName: "3.circle")
                        Text("Tab 3")
                    }
                    .tag(2)
            }
            
            Text("Selected Tab: \(selectedTab)")
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

在上面的示例中,我们创建了一个TabView,其中包含三个标签页。每个标签页都有一个唯一的标签标识符(tag),并且在标签项(tabItem)中定义了图标和文本。

通过将@State变量selectedTab传递给TabView的selection参数,我们可以将所选的TabView索引与selectedTab绑定在一起。当用户选择不同的标签页时,selectedTab将自动更新。

在父视图中,我们还添加了一个文本视图,用于显示当前所选的TabView索引。

这是一个简单的示例,演示了如何从另一个视图接收所选的TabView。根据具体的应用场景,你可以根据需要进行扩展和定制。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

SwiftUI搭建项目说起

SwiftUI 谈声明式 UI 与类型系统 跨平台: 在最新swiftUI 5.1中,我们创建一个MultilPlatform App有了下面这些区别: ·Before func...在UIKit中我们导航、标签都是通过控制器来管理,但是在SwiftUI中他们分别是通过NavigationView+TabView管理,我们得在认识上有一个基本转变,Controller到View...简单看看Na+Tb代码 ---- SceneDelegate开始, 根控制器就是 UIHostingController,我们需要做第一步就是设置它视图 rootView //...当 @State 装饰过属性发生了变化,SwiftUI 会根据新属性值重新创建视图 */ @State private var selectedTab = 0 var...下面的参考文章相信能帮助我们更好理解一下,SwiftUI! 参考文章: Apple SwiftUI SwiftUI 谈声明式 UI 与类型系统 如何评价 SwiftUI? 项目地址

4.5K20

如何在 SwiftUI 中创建悬浮操作按钮

创建悬浮操作按钮如何 SwiftUI 创建一个类似 Twitter App 中悬浮按钮。实现悬浮操作按钮可能有很多方法,下面是我要实现按钮一些简单需求,如下:悬浮按钮应该出现在屏幕主要内容前面。...以下是一个简单列表视图,嵌套在导航视图和选项卡视图中,列表中显示了 item 加索引内容。...要使视图出现在另一个视图前面,可以使用 ZStack 或 overlay 修饰符。...将一个按钮放在内容视图上。这将在列表视图上添加一个加号图像按钮。示例运行截图如下:悬浮按钮位于屏幕右下角接着,是需要实现需求中第二步,使按钮与内容视图对齐到右下角。...SwiftUI 通过 shadow 修饰符内置了添加阴影方法,核心代码如下:struct ContentView: View { var body: some View { TabView

16432
  • 打造可适配多平台 SwiftUI 应用

    另一个角度来看,用 SwiftUI 编写代码,尽管大部分可以运行在不同平台上,但有一部分则只能运行在特定平台上,而且往往这部分有平台限定功能,最能体现平台所具有的特点和优势。...我们创建 deviceStatus 目的是用来观察当前应用窗口状态,故此必须应用于最宽处。在 SwiftUI 中,除了环境值外,另一个具备较多平台“限制”部分就是视图 Modifier。...当我们将“电影猎手” iPhone 移植到 iPad 或 Mac 上时,除了屏幕可用空间更大之外,另一个显着变化是使用者可以同时打开多个窗口,并可以在不同窗口中对“电影猎手”进行独立操作。...图片由于“电影猎手”采用了编程式导航,视图堆栈以及 TabView 状态都保存在 Store 中,因此会出现操作同步情况。...为了让“电影猎手”更符合 macOS 应用规范,我们将视图移动到菜单项中,并在 mac 代码中取消了 TabView

    3.2K80

    打造可适配多平台 SwiftUI 应用

    另一个角度来看,用 SwiftUI 编写代码,尽管大部分可以运行在不同平台上,但有一部分则只能运行在特定平台上,而且往往这部分有平台限定功能,最能体现平台所具有的特点和优势。...我们创建 deviceStatus 目的是用来观察当前应用窗口状态,故此必须应用于最宽处。 在 SwiftUI 中,除了环境值外,另一个具备较多平台“限制”部分就是视图 Modifier。...当我们将“电影猎手” iPhone 移植到 iPad 或 Mac 上时,除了屏幕可用空间更大之外,另一个显着变化是使用者可以同时打开多个窗口,并可以在不同窗口中对“电影猎手”进行独立操作。...image-20230424093006309 由于“电影猎手”采用了编程式导航,视图堆栈以及 TabView 状态都保存在 Store 中,因此会出现操作同步情况。...为了让“电影猎手”更符合 macOS 应用规范,我们将视图移动到菜单项中,并在 mac 代码中取消了 TabView

    2.1K10

    解析SwiftUI布局细节(二)循环轮播+复杂布局

    如果你看了我们 Demo中代码,你就知道我们是采用 TabView 嵌套 NavigationView 形式,在这样模式下似乎是存在问题, 在 TabView+NavigationView 中你利用...,都比较简单,可能是就是这个 environmentObject (我把它称为环境变量)这个是需要特别说明一个变量,名字上可以看出,这个修饰符是针对全局环境。...GeometryReader 主要作用就是能够获取到父View建议尺寸,这就是它主要作用,要没有它我们面临可能就是无休止传值了,SwiftUI 既然是声明式UI,按我理解你就没有办法去获取某一个视图视图之类...3、再提一点关于上面说滚动视图,在UIKit中我们可以用UICollectionView搞定一切,但是在SwiftUI中没有这个控件,我建议采用方式是 ScrollView + HStack + VStack...= 单个视图宽度 + 视图间距 let currentOffset = CGFloat(currentIndex) * (homeViewModel.homeBannerWidth

    12.1K20

    SwiftUI 视图生命周期研究

    本文将作者对 SwiftUI 视图SwiftUI 视图生命周期理解和研究做以介绍,供大家一起探讨。...SwiftUI 视图SwiftUI 中,视图定义了一块用户界面,并以视图形式组织在一起,SwiftUI 通过解析视图树来创建合适渲染。...但 SwiftUI 并非一定会从新实例中获取 body 结果,如果之前实例注册过数据依赖,视图值树仍可能会原来实例 body 中获取结果。...•在 TabView 中,SwiftUI 在一开始就为所有 tab 对应视图创建了实例。 类似上面的情况还有不少。这也就很好解释了,很多开发者都会碰到某些视图莫名多次初始化情况。...: "2") .tag(2)} SwiftUI 将只在最初创建两个 ShowMessage 实例,无论如何切换 selection,TabView 将全程只使用这两个实例。

    4.4K30

    掌握 SwiftUI ScrollView:滚动几何

    SwiftUI 是一个强大框架,它简化了在苹果平台上构建用户界面的过程。SwiftUI一个基本组件是 ScrollView,它允许用户通过滚动导航内容。...在此示例中,我们使用 CGFloat 来跟踪内容偏移 Y 轴。转换闭包: ScrollGeometry 实例中提取所需信息。...在使用 onScrollGeometryChange 视图修饰符时,我们将 ScrollData 作为转换闭包返回类型, ScrollGeometry 实例中提取所有所需数据。...AdvancedContentView: 展示更高级滚动几何追踪功能,追踪内容大小和可见矩形变化。ScrollViewDemoApp: 包含 TabView,方便在基本和高级示例之间切换。...总结今天,我们探讨了 SwiftUI新 ScrollGeometry 类型和 onScrollGeometryChange 视图修饰符。

    13111

    掌握 SwiftUI Safe Area

    掌握 SwiftUI Safe Area 访问我博客 www.fatbobman.com[1] 可以获得更好阅读体验 Safe Area(安全区域)是指不与导航栏、标签栏、工具栏或其他视图控制器提供视图重叠内容空间...本文将探讨如何在 SwiftUI 中获取 SafeAreaInsets、将视图绘制到安全区域之外、修改视图安全区域等内容。...这是因为,我们并没有正确设置 ignoresSafeArea 另一个重要参数regions。... iOS 14 开始,SwiftUI 计算视图安全区域时,将软键盘在屏幕上覆盖区域(iPadOS 下,将软键盘缩小后键盘覆盖区域将被忽略)也一并进行考虑。...因此,无需使用任何额外代码,视图便自动获得了键盘避让能力。但有时,并非所有的视图都需要将软键盘覆盖区域安全区域中去除,因此需要正确地设置 SafeAreaRegions 。

    7.7K31

    老人新兵 —— 一款 iOS APP 开发手记

    去年( 2019 年 )十一开始进入到学习状态,到 11 月底,用了两个月时间,达到了基本具备构建一个完整 app 能力( 个人认为 ), 11 月 24 开始( Git 上第一个 commit...,不过就不优美了;切换页面 view 会重置状态,比如说 view1 里有个 ScrollView, 你已经进行了滚动,当你通过 TabView 切换到其他视图后切换回来,ScrollView 不会保留在原来地方...很难实现直接返回到根视图,通过 dissmiss 只能返回到上层视图。在 Xcode 11 beta 版本中还可以采用一些非常规手段实现这一功能,不过目前已被屏蔽了。...导致我无法很好地实现双击 TabView 图标返回该 Tab 视图,比较郁闷。...感觉 SwiftUI 在销毁 view 上代码有比较严重效率 bug( 参见上面的 TabView )。

    2.5K40

    SwiftUI案例:3D旋转图片播放器

    SwiftUI案例:3D旋转图片播放器 效果 目标 实现多张图片3D切换查看功能 外观配置 任选 7 张任意尺寸图片按 p1 至 p7 进行命名并拖拽进 Assets.xcassets 文件中(如图所示...) 创建View视图 在工作区项目文件夹下创建名为 View Group 并在其中依次创建 Home.swift CarouseBodyView.swift ScrollViewOffsetModifier.swift...: 滚动偏量视图,用来设置3D滚动效果; 视图实现 主视图 Home.swift 大致定义整个屏幕视图布局与容器接口。...import SwiftUI struct Home: View { //定义当前图片 @State var currentTab = "p1" var body: some View...CarouseBodyView.swift 通过视图容器嵌套布局,实现 Home.swift 中组件文本与图片具体内容。

    2.4K30

    解析 SwiftUI 中两处由状态更新滞后引发严重 Bug

    众所周知,SwiftUI 是一个响应式框架,这意味着,当数据源发生变化时,框架会自动更新视图。同样,当我们想调整视图显示时,应直接对状态进行修改。...原文发表在我博客 肘子Swift记事本视图变化在前、状态变化在后在 SwiftUI 中,某些可编程控件在执行一定操作时,会先更新视图,待视图变化完成后再修改与其对应状态。...而通过调用环境值或直接修改绑定状态,SwiftUI 则遵循了响应式编程原则,进行了先调整状态,后更新视图操作。...幸运是,我 @KyleSwifter 解密 SwiftUI 背后 AttributeGraph 一文中找到了线索。...AttributeGraph 是 SwiftUI 用于维护众多数据源与视图之间依赖关系工具。

    707110

    解析 SwiftUI 中两处由状态更新滞后引发严重 Bug

    视图变化在前、状态变化在后 在 SwiftUI 中,某些可编程控件在执行一定操作时,会先更新视图,待视图变化完成后再修改与其对应状态。这些控件基本上都是对 UIkit(AppKit)二次包装。...而通过调用环境值或直接修改绑定状态,SwiftUI 则遵循了响应式编程原则,进行了先调整状态,后更新视图操作。...幸运是,我 @KyleSwifter[4] 解密 SwiftUI 背后 AttributeGraph[5] 一文中找到了线索。...AttributeGraph 是 SwiftUI 用于维护众多数据源与视图之间依赖关系工具。...因此,当我们首先更新状态,然后 SwiftUI 再响应该状态变化(返回上层视图),即使此时对 AG 进行清理,仍将可以保证 AttributeGraph 完整性,应用自然不会出现问题。

    34620

    SwiftUI 动画机制

    SwiftUI 中,我们不能命令某个视图从一个位置移动到另一个位置,为了实现上述效果,我们需要声明该视图在状态 A 时所处位置以及状态 B 时所处位置,当由状态由 A 转到 B 时,SwiftUI...状态、视图标识、动画 既然 SwiftUI 动画是创建从一个状态到另一个状态平滑过渡,那么我们必须对状态(依赖项)改变可能导致结果有正确认识。...-05-09 15_14_45 有关视图结构性标识内容可以参阅 ViewBuilder 研究(下) —— 模仿中学习[7] 显式标识 在 SwiftUI 中,为视图设置显式识别有两种方式:ForEach...当修饰符 id 值发生变化时,SwiftUI 将其作用视图当前视图结构中移除,并创建新视图添加到原先所在视图层次位置。因此,可以影响到它动画部件也是 AnyTransaction 。...总结 动画是创建从一个状态到另一个状态平滑过渡 声明一个动画需要三要素 掌握状态变化所能导致结果 —— 同一个视图不同状态还是不同视图分支 时序曲线函数与依赖关联越精准,产生异常动画可能性就越小

    14.8K40

    肘子 Swift 周报 #036 | WWDC 2024 观后感

    随着 Swift 6 正式推出,这一里程碑标志着 Swift 迈向成熟重要一步。 Swift 6 开始,Swift 社区更加明确地展示了将 Swift 打造为跨平台主流开发语言决心。...虽然表面上新增功能似乎并不多,但底层大幅调整却是颠覆性。考虑到 SwiftData 仅成立一年,这样变化尤为出人意料。首个测试版本表现来看,稳定性目前仍是主要挑战。...SwiftUI 初次接触 SwiftUI 今年新特性时,我并未感到特别兴奋。然而,做了更多研究后,我意识到此次更新在 SwiftUI 发展史上将具有十分重要意义。...随着 SwiftUI 与 UIKit 框架之间动画、转场和手势等机制共享,SwiftUI 正逐渐仅基于 UIKit/AppKit 框架,转变为与苹果生态中其他 UI 框架更平等合作伙伴。...a stretchy header view with SwiftUI on iOS 18[13] by Donny Wals[14] Using iOS 18’s new TabView with

    12510

    如何使用 SwiftUI 中 ScrollView 滚动偏移

    前言WWDC 24 已经结束,我决定开始写一些关于 SwiftUI 框架即将推出新特性文章。今年,苹果继续填补空白,引入了对滚动位置更细粒度控制。本周,我们将学习如何操作和读取滚动偏移。...为了弥补这一不足,SwiftUI 引入了新 ScrollPosition 类型,使我们能够通过偏移量、滚动视图边缘、视图标识符等组合滚动位置。...新 ScrollPosition 类型SwiftUI 框架引入了新 ScrollPosition 类型,使我们能够通过偏移量、滚动视图边缘、视图标识符等组合滚动位置。...} .scrollPosition($position) .animation(.default, value: position) }}滚动到特定项目我们添加了另一个按钮来将滚动视图位置更改为随机项目...这个选项允许我们将位置更改为特定项目,通过使用 anchor 参数,我们可以选择所选视图哪个点应该可见。

    18210

    SwiftUI内容边距

    前言SwiftUI 引入了一组视图修饰符,使我们能够有效地管理视图安全区域。在许多情况下,安全区域是你希望放置内容地方。...字面上看,它是另一个安全区域,适应屏幕大小,但仅适用于文本内容。不幸是,我们在 SwiftUI 中无法访问 readableContentGuide。...然而,正如你所见,这也将滚动条指示器后导边缘移到了中心。使用 contentMargins我们需要一种区分视图内容和工具栏,并仅移动内容而保持工具栏在原地方法。...幸运是,SwiftUI 引入了新 contentMargins 视图修饰符,使我们能够在视图中移动特定类型内容。...总结本文介绍了 SwiftUI内容边距管理,通过对比安全区域概念,解释了内容边距重要性。文章创建示例开始,展示了在列表视图中如何处理内容边距问题。

    17632

    SwiftUI 布局协议 - Part 1

    在这 120pt 中,文本只需要 74,并传达给父视图,父视图现在可以拿走多余 46pt 给其他视图用。因为其他子视图是图形,所以它们可以接收给它们一切东西。...情况二:如果子视图完全接收提供视图 图形就是视图一个例子,不管你提供了什么他都能接收。在上一个例子中,绿色矩形占据了提供所有空间,但没有一个多余像素。...当我们讲到组合布局例子时,我们将对此进行探讨,但让我们了解如何使用缓存提高性能开始。 在 SwiftUI 布局过程中会多次调用 sizeThatFits 和 placeSubviews 方法。...使用 AnyLayout 切换布局 布局容器另一个有趣地方,我们可以修改容器布局, SwiftUI 会友好地用动画处理两者切换。不需要额外代码!...那是因为视图会识别标识并且维护, SwiftUI 将这个行为认为是视图改变,而不是两个单独视图

    3.3K10
    领券