Как сделать открытие модального окна через метод .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))
        }
    }
    
}
→ Ссылка