swift - 如何在 swiftUI 中切换到另一个 TabView?
问题描述
我知道以前有人问过这个问题,我发现了其中一些,但我的略有不同。
例如,我发现了这个:
如果您在同一个 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
有人可以就这个问题提出建议吗?
解决方案
例如,如果你尝试这个例子,它会工作!如果将它们放在不同的文件中,它根本不会对结果产生任何影响!
文件内容视图:
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") }
}
}
推荐阅读
- eclipse-plugin - 检索java中所有方法调用者的信息
- python - 带有实例方法的 TypeError
- javascript - 根据条件从字典中获取值并显示结果
- python - iven 一列找到与指定列的最高相关变量
- scala - Scala存在类型奇怪的行为
- powershell - 如果第一个通过,如何在 Windows Powershell 中按第二个执行顺序运行多个命令?
- git - 如何将大型虚幻引擎 4 项目上传到 GitHub?
- html - 轮廓按钮到图像轮廓
- javascript - 从前端调用 Node/Axios
- python - 如何将打印空心钻石的代码转换为实心钻石?