【发布时间】:2021-08-20 02:02:36
【问题描述】:
我被推荐使用标准组件,所以我没有构建自己的 TabView,而是使用了 SwiftUI 的 TabView。我只需要一个不会激活视图但会触发操作的自定义操作。
我用下面的代码几乎成功了:
import SwiftUI
struct ContentView: View {
@State var value: Int = 1
private var adapterValue: Binding<Int> {
Binding<Int>(get: {
if (self.value == 4) {
return 2
} else {
return self.value
}
}, set: {
if $0 == 4 {
self.value = 2
} else {
self.value = $0
}
})
}
var body: some View {
TabView(selection: self.adapterValue, content: {
Text("A").tabItem {
VStack {
Text("A")
}
}
.tag(1)
Text("B").tabItem {
VStack {
Text("B")
}
}
.tag(2)
Text("C").tabItem {
VStack {
Text("C")
}
}
.tag(3)
Text("D").tabItem {
VStack {
Text("D")
}
}
.tag(4)
})
}
}
它工作得很好,除了当标签 2 (B) 被激活并且我按 4 (D) 时,标签 4 (D) 被激活。这不应该发生,但我不确定我错过了什么。
我想了解这无法按预期工作的原因以及如何防止这种行为。
【问题讨论】: