Переменная состояния SwiftUI не отображает вид, если не используется изнутри (стихи в модификаторе)
Извините за ужасную формулировку, но в onAppear я меняю переменную состояния, однако это не приводит к повторной визуализации представления, если я не использую эту переменную состояния где-то внутри представления.
Я пытаюсь открыть модальное окно, если пользователь не вошел в систему, но он не появится, если я не добавлю переменную в представление, как показано ниже.
struct SearchView: View {
// Environment Variables
@EnvironmentObject var session: SessionStore
@State var sheetIsPresented: Bool = false
var body: some View {
NavigationView {
// Just having a line like this will cause it to work
if self.sheetIsPresented || !self.sheetIsPresented {}
}
.onAppear {
if self.session.userSession != nil {
self.sheetIsPresented = true
}
}
.sheet(isPresented: $sheetIsPresented) {
WelcomeSignInModal(sheetIsPresented: self.$sheetIsPresented)
}
}
}
1 ответ
Вы можете попробовать следующую демонстрацию:
class SessionStore: ObservableObject {
var userSession: String? = "session"
}
struct ContentView: View {
@EnvironmentObject var session: SessionStore
@State var sheetIsPresented: Bool = false
var body: some View {
NavigationView {
Text("SearchView")
}
.onAppear {
self.sheetIsPresented = self.session.userSession != nil
}
.sheet(isPresented: $sheetIsPresented) {
Text("WelcomeSignInModal")
}
}
}
Протестировано с Xcode 11.6, iOS 13.6