関数が呼び出されると変更される Published 変数があります。クラス内で変数を印刷すると、変数が設定されていることがわかりますが、ビューが変更されず、変数を印刷すると、変数を最初に設定したものだけが印刷されます。
これについていくつかの同様の投稿があったことは知っていますが、それらを調べた後でも、何が間違っているのかまだわかりません。
コードは次のとおりです:(ここでは関係ないと思われるマイナスビット)
変数を変更するために呼び出される関数を含むクラス
class MusicManager: NSObject, ObservableObject {
@Published var playlistLabel: String = "N/A"
func playPlaylistNow(chosenPlaylist: String?) {
...
playlistLabel = chosenPlaylist!
print(playlistLabel) // I get the revised variable printed here
}
}
表示して更新
struct HomeView: View {
...
@ObservedObject var musicManager: MusicManager = MusicManager()
var body: some View {
...
SongLabels(trackLabel: currentTrack!, artistLabel: currentArtist!, playlistLabel: musicManager.playlistLabel)
...
}
...
.onAppear {
self.updateTrackData()
}
}
func updateTrackData() {
print("Playlist: \(musicManager.playlistLabel)") // I get the original "N/A" printed here
}
関数を呼び出すビュー:
{
@State private var showingAlert = false
let musicManager: MusicManager = MusicManager()
var playlistName: String
var body: some View {
Button(action: {
self.showingAlert = true
self.musicManager.playPlaylistNext(chosenPlaylist: self.playlistName)
}) {
Text("Play Next")
}
.alert(isPresented: $showingAlert) {
...
}
...
}
}