开发者社区> 问答> 正文

当应用程序转到后台时,SwiftUI视图停止更新

我正在使用Spotify APK授权连接到Spotify应用程序。所有与Spotify的通信都是通过现场代表完成的。我的问题是,当我请求授权时,当我被带到Spotify应用程序时,当前的视图似乎停止使用@已发布的变量更改进行更新。但是,我希望在成功的授权/连接之后更改视图。

我尝试让MainView更新使用不同变量的不同更改,但似乎无论我做什么,一旦应用程序离开并重新进入前台,视图就不再使用已发布变量的更改来更新。

代表:

class SceneDelegate: UIResponder, UIWindowSceneDelegate, SPTAppRemoteDelegate, SPTAppRemotePlayerStateDelegate {

    @ObservedObject var MainVM = MainViewModel()

    func appRemoteDidEstablishConnection(_ appRemote: SPTAppRemote) {
        MainVM.viewSwitch = false
    }

}

MainViewModel:

class MainViewModel: ObservableObject {

    @Published var viewSwitch: Bool = true

    var appRemote: SPTAppRemote {
        get {
            let scene = UIApplication.shared.connectedScenes.first
            let sd : SceneDelegate = (scene?.delegate as? SceneDelegate)!
            return sd.appRemote
        }
    }

    func connectAppRemote() {
        appRemote.authorizeAndPlayURI("")
    }

}

MainView:

struct MainView: View {

    @ObservedObject var MainVM = MainViewModel()

    var body: some View {
        if MainVM.viewSwitch {
            Text("View 1 Displayed")
        } else {
            Text("View 2 Displayed")
        }
    }
    .onAppear {
        MainVM.connectAppRemote()
    }
}

展开
收起
游客5akardh5cojhg 2019-12-25 16:04:44 2516 0
1 条回答
写回答
取消 提交回答
  • 您使用不同的对象:

    一个。SceneDelegate有自己的实例(顺便说一句,这里不需要ObservedObject)

    class SceneDelegate: UIResponder, UIWindowSceneDelegate, SPTAppRemoteDelegate, SPTAppRemotePlayerStateDelegate {

    @ObservedObject var MainVM = MainViewModel()
    

    B.MainView有自己的

    struct MainView: View {

    @ObservedObject var MainVM = MainViewModel() // << recreated
    

    你得把那个给我SceneDelegate如environmentObject在……里面MainView,就像

    func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {

    let contentView = MainView().environmentObject(MainVM)
    

    并相应声明

    struct MainView: View {

    @EnvironmentObject var MainVM: MainViewModel
    
    2019-12-25 16:05:03
    赞同 展开评论 打赏
问答标签:
问答地址:
问答排行榜
最热
最新

相关课程

更多

相关电子书

更多
OpenStack Swift 海量小文件优化之路 立即下载
From Java/Android to Swift iOS 立即下载
Swift在Airbnb的应用实践 立即下载