![](/img/trans.png)
[英]SwiftUI Picker Help — Populating picker based on the selection of another picker
[英]Is there a better way to implement displaying different views based on view picker selection?
請查看以下代碼並告訴我這一點。 1、有沒有更好的方法來實現這個功能? 2. 我知道AnyView對性能有影響,但如果沒有更好的方法來應用SRP ,那么性能影響值得嗎?
struct ContentView: View {
@ObservedObject var viewPicker = ViewPicker()
var body: some View {
VStack {
Picker("View Picker", selection: $viewPicker.selectionIndex) {
Text("Days").tag(0)
Text("Months").tag(1)
Text("Years").tag(2)
}
.pickerStyle(SegmentedPickerStyle())
viewPicker.pick()
}
}
}
struct DayView: View {
var body: some View { Text("Day View") }
}
struct MonthView: View {
var body: some View { Text("Month View") }
}
struct YearView: View {
var body: some View { Text("Year View") }
}
//MARK:- View Picker
class ViewPicker: ObservableObject {
@Published var selectionIndex = 0
func pick() -> AnyView {
switch selectionIndex {
case 0:
return AnyView(DayView())
case 1:
return AnyView(MonthView())
case 2:
return AnyView(YearView())
default:
return AnyView(Text("Unknown"))
}
}
}
如果你 go 那樣的話,下面的看起來更適合我(從 SwiftUI 設計角度來看)
用 Xcode 11.4 測試
class ViewPicker: ObservableObject {
@Published var selectionIndex = 0
func pick() -> some View {
Group {
if selectionIndex == 0 {
DayView()
}
if selectionIndex == 1 {
MonthView()
}
if selectionIndex == 2 {
YearView()
}
if selectionIndex > 2 {
Text("Unknown")
}
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.