Возврат текста из другого представления Ошибка, отсутствует параметр аргумента
struct SettingsView: View {
var body: some View {
welcomeView()
//:Missing argument for parameter 'currentAuthStat' in call
}
}
struct welcomeView: View {
@Binding var currentAuthStat: UNNotificationSetting
var body: some View {
explanatoryText
}
private var explanatoryText: Text {
let explanatoryText: Text
switch currentAuthStat {
case .enabled:
explanatoryText = Text("Notifications are enabled")
+ Text(Image(systemName: "checkmark"))
default:
explanatoryText = Text("Notifications disabled ")
+ Text(Image(systemName: "x.squareroot"))
}
return explanatoryText
}//: explanatoryText
}
когда я пытаюсь отобразить welcomeView() в SettingsView, я получаю сообщение об ошибке «Отсутствует аргумент для параметра 'currentAuthStat' в вызове». Я попытался добавить @State var в SettingsView, но затем это выдает ошибку при вызове в ContentView и когда я добавьте его в ContentView, он хочет, чтобы я добавил это на страницу приложения {} @main, а затем я получаю сообщение об ошибке: приложение не соответствует View().
Как передать этот пояснительный текст другому представлению?
1 ответ
вам следует изучить и хорошо изучить использование @State и @Binding, потому что это фундаментально для использования SwiftUI. Вот возможный способ исправить полученную ошибку:
import SwiftUI
@main
struct TesttApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
struct ContentView: View {
var body: some View {
SettingsView()
}
}
struct SettingsView: View {
@State var currentAuthStat: UNNotificationSetting = .enabled // <-- here give it a value
var body: some View {
welcomeView(currentAuthStat: currentAuthStat) // <-- pass it to the welcomeView
}
}
struct welcomeView: View {
// unless you change currentAuthStat, there is no need for Binding
@State var currentAuthStat: UNNotificationSetting // <-- here receive the value
var body: some View {
explanatoryText
}
private var explanatoryText: Text {
let explanatoryText: Text
switch currentAuthStat {
case .enabled:
explanatoryText = Text("Notifications are enabled")
+ Text(Image(systemName: "checkmark"))
default:
explanatoryText = Text("Notifications disabled ")
+ Text(Image(systemName: "x.squareroot"))
}
return explanatoryText
}//: explanatoryText
}