处理选项卡选择SwiftUI

时间:2019-07-10 10:47:10

标签: ios swift swiftui ios13

在教程之后,我有以下代码来显示一个选项卡视图,其中包含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 个答案:

答案 0 :(得分:0)

您可以通过更改点击值来实现。您可以对特定标签使用.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
               }
          }
    }
}