SwiftUI заставляет появляться или исчезать вкладку Элемент в Настройках - PullRequest
0 голосов
/ 01 февраля 2020

Я пытался пропустить элемент в моем TabView. Я пытался с .disable() и if else, но ничего не работает. Мой флаг переключения отлично работает, но вид не хочет обновлять. Любые идеи? Я пробовал другие вещи, но ничего не работает. Или как я могу обновить мой полный просмотр?

@ObservedObject var coachPresenter : CoachPresenter
    var body: some View {
        TabView{
            DashboardView()
                .tabItem({
                    Image(systemName: "rectangle.3.offgrid")
                    Text("Dashboard")
                })
            //If flag set true coach item will appear
            if coachPresenter.settingActivated {
            CoachView()
                .tabItem({
                    Image(systemName: "shield")
                    Text("Coach")
                })
            }
}

Здесь мой просмотр настроек:

struct SettingsView: View {

    @ObservedObject var coachPresenter : CoachPresenter

    var body: some View {
        VStack{
        Text("SettingsView")
            Toggle(isOn: $coachPresenter.settingActivated){
                Text("Coach Version")

            }

            Button(action: {
                print("\(UserDefaults.standard.bool(forKey: "coach"))")
            }) {
                Text("Status")
            }

        }
    }
}

А вот другой мой просмотр для двухсторонней привязки:

class CoachPresenter: ObservableObject {

    var willChange = PassthroughSubject<Bool, Never>()

    var settingActivated: Bool = UserDefaults.settingActivated {
        willSet {

            UserDefaults.settingActivated = newValue

            willChange.send(newValue)
        }
    }
}

extension UserDefaults {

    private struct Keys {
        static let settingActivated = "coach"
    }

    static var settingActivated: Bool {
        get {
            return UserDefaults.standard.bool(forKey: Keys.settingActivated)
        }
        set {
            UserDefaults.standard.set(newValue, forKey: Keys.settingActivated)
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...