SwiftUI какой-то вид на его root вид - PullRequest
1 голос
/ 21 февраля 2020

Я хочу запустить обновление подпредставления в SwiftUI, изменив состояние переменной @State, поскольку оно не обновляется само по себе, когда я изменяю объект кошелька, поскольку он определен как EnvironmentObject. Дело в том, что я должен инициализировать представление с помощью environmentObject, и оно возвращает Some View и не может привести его к WalletView, как должно показаться, что оно должно.

var walletView =  WalletView().environmentObject(Wallet(cards: reminders))

if walletView = walletView as? WalletView{
    walletView.isPresented = !walletView.isPresented
}

Как я могу получить доступ к объекту WalletView?

Я пробовал:

var walletView =  WalletView()
let someWalletView = walletView.environmentObject(Wallet(cards: reminders))

walletView.isPresented = !walletView.isPresented

, но WalletView не обновляется. Любая подсказка?

Ответы [ 2 ]

1 голос
/ 21 февраля 2020

Подход SwiftUI заключается в изменении состояния просмотра в представлении , так что, насколько я понял, что вы собираетесь делать с WalletView, этого можно добиться, как показано ниже (поцарапано):

struct WalletView: View {
   ...
   var body: some View {
      _some_internal_view
         .onAppear { self.isPresented = true }
         .onDisappear { self.isPresented = false }
   }
}
0 голосов
/ 21 февраля 2020

Я решил эту проблему, изменив переменную isPresented на @Binding, а затем изменив ее, вызовет обновление подкласса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...