#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)
}