Как сделать открытие модального окна через метод .sheet для ipad и через .fullScreenCover для iPhone?
Хочу сделать расширение для SwiftUI View которое открывает модальное View через метод .sheet для iPad и через метод .fullScreenCover для iPhone.
Пробовал так:
extension View {
public func modal<Item, Content>(
item: Binding<Item?>,
content: @escaping (Item) -> Content) ->
some View where Item : Identifiable, Content : View {
if UIDevice.current.userInterfaceIdiom == .pad {
return sheet(item: item, content: content)
} else {
return fullScreenCover(item: item, content: content)
}
}
}
Но получаю ошибку:
Function declares an opaque return type, but the return statements in its body do not have matching underlying types
Ответы (1 шт):
Автор решения: VAndrJ
→ Ссылка
Заверните в AnyView:
extension View {
public func modal<Item, Content>(
item: Binding<Item?>,
content: @escaping (Item) -> Content) ->
some View where Item : Identifiable, Content : View {
if UIDevice.current.userInterfaceIdiom == .pad {
return AnyView(sheet(item: item, content: content))
} else {
return AnyView(fullScreenCover(item: item, content: content))
}
}
}