我想在SwiftUI的SegmentedControl中使用SF符号。将此代码复制到项目中,然后观察会发生什么。没有很好的方法来解释此行为。您必须自己看看。
import SwiftUI
struct ContentView : View {
@State private var favoriteColor = 0
var body: some View {
VStack {
SegmentedControl(selection: $favoriteColor) {
Image(systemName: "hammer.fill").tag(0)
Image(systemName: "house.fill").tag(1)
Image(systemName: "desktopcomputer").tag(2)
Image(systemName: "cart.fill").tag(3)
Image(systemName: "phone.arrow.right.fill").tag(4)
Image(systemName: "wand.and.rays").tag(5)
Image(systemName: "slider.horizontal.3").tag(6)
}
Text("Value: \(favoriteColor)")
}
}
}
#if DEBUG
struct ContentView_Previews : PreviewProvider {
static var previews: some View {
ContentView()
}
}
#endif
如果有人发现此问题,请提供答案或解释。
答案 0 :(得分:1)
是的,这是一个错误。在解决之前,这里有一种解决方法。您基本上将片段封装在一个单独的视图中,问题就消失了:
struct TabItem: View {
let image: String
let tag: Int
var body: some View {
Image(systemName: image).tag(tag)
}
}
struct ContentView : View {
@State private var favoriteColor = 0
var body: some View {
VStack {
SegmentedControl(selection: $favoriteColor) {
TabItem(image: "hammer.fill", tag: 0)
TabItem(image: "house.fill", tag: 1)
TabItem(image: "desktopcomputer", tag: 2)
TabItem(image: "cart.fill", tag: 3)
TabItem(image: "phone.arrow.right.fill", tag: 4)
TabItem(image: "wand.and.rays", tag: 5)
TabItem(image: "slider.horizontal.3", tag: 6)
}
Text("Value: \(favoriteColor)")
}
}
}