处理选项卡选择 SwiftUI

Posted

技术标签:

【中文标题】处理选项卡选择 SwiftUI【英文标题】:Handle Tab Selection SwiftUI 【发布时间】:2019-07-10 10:47:10 【问题描述】:

按照教程,我有以下代码来显示一个带有 3 个选项卡项的选项卡视图,所有选项卡项上都有一个图标,按下它们时,它们会在三个不同的视图之间导航。这一切都很好,但是,我希望能够处理选择,并且仅在满足某些条件时才显示视图 2 或 3。

有没有办法获取选定的值并检查它,然后检查我自己的条件,然后显示视图是否满足条件,或者如果不是说他们目前无法使用该视图,则显示警报。

本质上,我希望能够在切换视图之前拦截选择值,也许我需要重写所有这些,但这是我正在寻找的功能,因为这就是我之前使用的应用程序的工作方式旧框架。

@State private var selection = 1

var body: some View

    TabbedView(selection: $selection)
    
        View1().tabItemLabel(
            VStack
            
                Image("icon")
                Text("")
            )
            .tag(1)

        View2().tabItemLabel(
            VStack 
            
                Image("icon")
                Text("")
            ).tag(2)

        View3().tabItemLabel(
            VStack 
            
                Image("icon")
                Text("")
            ).tag(3)
    

【问题讨论】:

【参考方案1】:

您可以通过更改点击时选择的值来做到这一点。您可以对特定选项卡使用 .onAppear() 方法来检查您的状况:

@State private var selection = 1
var conditionSatisfied = false

var body: some View

TabbedView(selection: $selection)

    View1().tabItemLabel(
        VStack
        
            Image("icon")
            Text("")
        )
        .tag(1)
    View2().tabItemLabel(
        VStack 
        
            Image("icon")
            Text("")
        ).tag(2)
          .onAppear() 
               if !conditionSatisfied 
                 self.selection = 1
               
          
    View3().tabItemLabel(
        VStack 
        
            Image("icon")
            Text("")
        ).tag(3)
           .onAppear() 
               if !conditionSatisfied 
                 self.selection = 1
               
          
    

【讨论】:

以上是关于处理选项卡选择 SwiftUI的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI 选项卡视图显示表

SwiftUI MacOs 选项卡

SwiftUI:Tabview,更改选项卡时保持状态

SwiftUI 在选项卡之间导航的正确方式

SwiftUI TabbedView 只显示第一个选项卡的内容

TabView 在为 SwiftUI 设置动画的选项卡之间切换