У меня есть значение bool в UserDefaults, чтобы проверить, вошел ли пользователь в систему или нет. На моей первой странице у меня есть заголовок, где, когда пользователь щелкает по профилю pi c, он показывает модальный режим (с использованием .sheet), а внутри у меня есть кнопка для выхода пользователя из системы.
Как я могу изменить Посмотрите, когда пользователь нажимает кнопку LogOut и отклоняет модал?
Или как я могу перезагрузить главную страницу после того, как пользователь нажмет кнопку LogOut и отклонит модал, чтобы проверить новое значение Bool?
struct Home: View {
var body: some View {
ScrollView {
VStack {
// MARK: Header
Header(title: "Home")
}
Spacer()
}
.padding(20)
}
}
struct Header: View {
public var title: String = ""
@State private var showProfile = false
var body: some View {
HStack {
// MARK: - User Profile
Image("profile")
.resizable()
.clipShape(Circle())
.frame(width: 50, height: 50)
.onTapGesture {
print("⚠️ Profile has been tapped.")
self.showProfile.toggle()
}
.sheet(isPresented: $showProfile) {
Account(showProfile: self.$showProfile)
}
}
}
}
struct Account: View {
@Binding var showProfile: Bool
var body: some View {
NavigationView {
// MARK: - Account Sections
List {
// MARK: - Log Out -
Section {
Button(action: {
print("❌ User has been logged out.")
self.showProfile.toggle()
}) {
Text("Log Out")
.bold()
.foregroundColor(.red)
}
}
}
// MARK: - NavigationBar Settings
.navigationBarTitle("Account", displayMode: .inline)
}
}
}
и это мой класс UserDefault
class UsersSettings: ObservableObject {
@Published var isLoggedIn: Bool = UserDefaults.standard.bool(forKey: "isLogged") {
didSet {
UserDefaults.standard.set(self.isLoggedIn, forKey: "isLogged")
print(UserDefaults.standard.bool(forKey: "isLogged"))
}
}
}