Как я могу инициализировать содержимое с параметром в .fullScreenCover в IOS14

#swiftui #ios14

#swiftui #ios14

Вопрос:

.fullScreenCover(представлен: <#T ##Привязка #>, содержимое: <#T ##() -> Просмотр #>)

Мне нужно инициализировать представление с параметром и передать его в .fullScreenCover, я могу сделать это с помощью TesFullScreen.init без проблем, но при инициализации представления с параметром будет ошибка, вот пример кода. Надеюсь, кто-нибудь может помочь. Спасибо

Без параметра работает

      .fullScreenCover(isPresented: self.$showFullScreen, content: TesFullScreen.init)
  

Но с параметром не работает

      .fullScreenCover(isPresented: self.$showFullScreen, content: TesFullScreen(closeFlag: self.$showFullScreen, game: 1))
  

contentView

 import SwiftUI
struct ContentView: View {
    
    var game : Int = 1
    @State var showFullScreen : Bool = false
    
    var body: some View {
        NavigationView {
            VStack {
                Spacer()
                Button(action: { self.showFullScreen = true }) {
                    Text("Show Full Screen")
                }
                Spacer()
            }
            .navigationBarTitle("TextBugs", displayMode: .inline)
        }
        .fullScreenCover(isPresented: self.$showFullScreen, content: TesFullScreen.init)
//        .fullScreenCover(isPresented: self.$showFullScreen, content: TesFullScreen(game: 1))
    }
}
  

TesFullScreen

 struct TesFullScreen: View {
    
    init(game : Int){
        print(game)
    }

    init(){
        print("No parameter work")
    }
    
    var body: some View {
        Text("Full Screen")
    }
}
  

полное кодирование:
https://github.com/BellRinging/ForBugsFix.git

Комментарии:

1.Вы меня не правильно поняли — пожалуйста, создайте минимальный, но воспроизводимый пример — такой, чтобы я мог копировать и вставлять в свой проект, который в идеале состоит struct TesFullScreen: View только из и вставляется непосредственно в вопрос (не как ссылка на GitHub).

2. ic .. Я сокращаю код, и вы можете воспроизвести его путем копирования и анализа. Моя версия Xcode — 12.0

Ответ №1:

Наконец-то я понял. Нужно изменить его следующим образом

 .fullScreenCover(isPresented: self.$showFullScreen){
            TesFullScreen(game: 1)
        }