Представление оповещения в SwiftUI с использованием MVVMIOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 Представление оповещения в SwiftUI с использованием MVVM

Сообщение Anonymous »

Я пытаюсь создать приложение, используя SwiftUI и архитектуру MVVM. Я бы хотел, чтобы мое представление подавало предупреждение всякий раз, когда его ViewModel сочтет это необходимым — скажем, когда у него есть какой-то новый результат, доступный из модели. Итак, предположим, что всякий раз, когда виртуальная машина обнаруживает новый результат, она соответствующим образом устанавливает свой статус:

ViewModel:

Код: Выделить всё

enum Status {
case idle
case computing
case newResultAvailable
}

class MyViewModel: ObservableObject {

@Published var status = Status.idle

...
}
Вид:

Код: Выделить всё

struct ContentView: View {

@ObservedObject var vm = MyViewModel()

@State private var announcingResult = false {
didSet {
// reset VM status when alert is dismissed
if announcingResult == false {
vm.status = .idle
}
}
}

var body: some View {
Text("Hello")
.alert(isPresented: $announcingResult) {
Alert(title: Text("There's a new result!"),
message: nil,
dismissButton: .default(Text("OK")))
}
}
}
Apple разработала модификатор .alert(), принимающий привязку в качестве первого аргумента, чтобы предупреждение отображалось всякий раз, когда привязанное свойство становится истинным< /код>. Затем, когда оповещение отклоняется, связанному свойству автоматически присваивается значение false.

Мой вопрос:
Как сделать так, чтобы предупреждение появлялось всякий раз, когда статус виртуальной машины становится .newResultAvailable? Мне кажется, именно так и должен функционировать MVVM, и это очень похоже на все демо SwiftUI WWDC, но я не могу найти способ…

Подробнее здесь: https://stackoverflow.com/questions/601 ... using-mvvm
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • SwiftUI — отключить представление взаимодействия с просмотром с помощью специального оповещения
    Гость » » в форуме IOS
    0 Ответы
    27 Просмотры
    Последнее сообщение Гость
  • Представление пользовательского оповещения поверх всех видов, включая листы или полную обложку
    Anonymous » » в форуме IOS
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • В чем разница между mvvm с чистой архитектурой и mvvm без чистой архитектуры в Android?
    Anonymous » » в форуме Android
    0 Ответы
    31 Просмотры
    Последнее сообщение Anonymous
  • CommunityToolKit.Mvvm 8.4.0 и предупреждение MVVM Toolkit MVVMTK0045
    Anonymous » » в форуме C#
    0 Ответы
    72 Просмотры
    Последнее сообщение Anonymous
  • CommunityToolkit.mvvm 8.4.0 и MVVM Toolkit Warning Mvvmtk0045
    Anonymous » » в форуме C#
    0 Ответы
    28 Просмотры
    Последнее сообщение Anonymous

Вернуться в «IOS»