Возврат текста из другого представления Ошибка, отсутствует параметр аргумента

      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
}
Другие вопросы по тегам