我有一个变量(描述播放列表的标签)在一个类中,我需要通过@EnvironmentObject状态在我的视图之间传递。当由一个视图调用更改该标签的函数(与变量在同一类中)时,其他视图中的变量也会更新。但是,当通知被触发时,AppDelegate也会调用该函数。目前,我已将包含标签的类声明为AppDelegate中的新实例,这导致视图/结构中的变量没有变化。
是否可以让AppDelegate访问环境对象(例如通过AppDelegate().environmentobject(myClass)),如果可以,那么应该在哪里进行?或者有更好的方法吗?
简化代码:
包含playlistLabel和更改播放列表及其标签函数的类
class MusicManager: NSObject, ObservableObject {
var playlistLabel: String = ""
func playPlaylistNow(chosenPlaylist: String?) {
playlistLabel = "Playlist: \(chosenPlaylist!)"
}
}
首页视图显示标签
struct HomeView: View {
@EnvironmentObject var musicManager: MusicManager
var body: some View {
Text(musicManager.playlistLabel)
}
}
应用代理
class AppDelegate: UIResponder, UIApplicationDelegate, AVAudioPlayerDelegate {
var musicManager: MusicManager = MusicManager()
func application(_ application: UIApplication, didReceive notification: UILocalNotification) {
var playlistName: String = ""
if let userInfo = notification.userInfo {
playlistName = userInfo["soundName"] as! String
}
musicPlayerManager.playPlaylist(chosenPlaylist: playlistName)
}
}
addDelegate
被写了两次。难道不应该是appDelegate
吗? - soundflixaddDelegate
被写了两次。难道不应该是appDelegate
吗? - undefined