💬
[SwiftUI] 一つのViewに複数のpopOverを表示する
ナビゲーションバーに設置したBarButtonからpopOverを表示させるサンプルです。
SwiftUIでは、複数の .popover
を書くことができないため、switch文を使い表示させるサブビューを切り替えます。
struct AnimalView: View {
...
@State private var isPopOverPresented: Bool = false
@State private var popOverStyle = PopOverStyle.cat
private enum PopOverStyle {
case cat
case dog
}
...
var body: some View {
...
.toolbar {
ToolbarItemGroup(placement: .navigationBarTrailing) {
Button(action: {
popOverStyle = .dog
isPopOverPresented = true
},
label: {
Text("Dog")
}
)
Button(action: {
popOverStyle = .cat
isPopOverPresented = true
},
label: {
Text("Cat")
}
)
}
}.popover(isPresented: $isPopOverPresented,
attachmentAnchor: .point(.top),
arrowEdge: .top) {
switch popOverStyle {
case .dog:
DogView()
case .cat:
CatView()
}
}
}
...
}
Discussion