首页 > 解决方案 > 如何在 swiftUI 中切换到另一个 TabView?

问题描述

我知道以前有人问过这个问题,我发现了其中一些,但我的略有不同。

例如,我发现了这个:

以编程方式更改为 SwiftUI 中的另一个选项卡

如果您在同一个 Swift 文件中有struct ContentView: View {...}和,则效果很好。struct FirstView: View {...}

但在我的项目中,我有struct ContentView: View {...}1 个 Swift 文件和struct FirstView: View {...}另一个单独的 swift 文件。

因此,当我@Binding var tabSelection: Int在我的FirstView()文件中使用时,我的 ContentView 文件中出现此错误:Argument passed to call that takes no arguments

有人可以就这个问题提出建议吗?

标签: swiftswiftui

解决方案


例如,如果你尝试这个例子,它会工作!如果将它们放在不同的文件中,它根本不会对结果产生任何影响!

文件内容视图:

import SwiftUI

struct ContentView: View {
    @State private var tabSelection = 1
    
    var body: some View {
        TabView(selection: $tabSelection) {
            
            FirstView(tabSelection: $tabSelection)
                .tabItem {
                    Text("Tab 1")
                }
                .tag(1)
            
            SecondView(tabSelection: $tabSelection)
                .tabItem {
                    Text("Tab 2")
                }
                .tag(2)
        }
    }
}

文件第一视图:

import SwiftUI

struct FirstView: View {
    
    @Binding var tabSelection: Int
    
    var body: some View {
        
        Button(action: { tabSelection = 2 }) { Text("Change to tab 2") }
        
    }
}

文件第二视图:

import SwiftUI

struct SecondView: View {
    
    @Binding var tabSelection: Int
    
    var body: some View {
        
        Button(action: { tabSelection = 1 }) { Text("Change to tab 1") }
        
    }
}

推荐阅读