🐷
iOS14.5でSwiftUIがmultiple sheetに対応したので確認した
iOS 14.5
からSwiftUIで複数のsheet
やfullScreenCover
をViewに適用可能になりました。
You can now apply multiple sheet(isPresented:onDismiss:content:) and fullScreenCover(item:onDismiss:content:) modifiers in the same view hierarchy.
実際に以下のようなコードを書いて確認してみました。
環境
- Xcode 12.5
struct ContentView: View {
@State var showSheet1 = false
@State var showSheet2 = false
var body: some View {
VStack(spacing: 16) {
Button("sheet1を表示") {
showSheet1.toggle()
}
Button("sheet2を表示") {
showSheet2.toggle()
}
}
.sheet(isPresented: $showSheet1, onDismiss: nil, content: {
VStack {
Text(UIDevice.current.systemVersion)
Text("sheet1")
}
})
.sheet(isPresented: $showSheet2, onDismiss: nil, content: {
VStack {
Text(UIDevice.current.systemVersion)
Text("sheet2")
}
})
}
}
左が14.4
のシミュレータ、右が14.5
です。
OSのバージョンで挙動が変わるのはなんとなく微妙ですよね。「14.5
以降では正常だが14.4
以下で動きがおかしい」といったケースがでてくるかもしれません。まだmultiple sheetは書かない方が良い気がします。
Discussion