我正在尝试使用 Apple 的SwiftUI制作一个应用程序,我需要有两个按钮在List一行中显示两个不同的视图。
我使用Xcode beta 7和MacOS Catalina beta 7。我试图添加一个Button呈现视图但是,我无法点击它,当我尝试在一个简单的Button外部List并点击它时,该AddList()视图没有出现。我也试过添加一个navigationButton内部,navigationButton但它也不起作用。tapAction单击它时添加一个也不起作用,视图仍然没有出现
NavigationView {
List(0..<5) { item in
NavigationLink(destination: ContentOfList()) {
Text("hello") // dummy text
Spacer()
Text("edit")
.tapAction {
AddList() // This is the view I want to present
}
}
}.navigationBarItems(trailing: NavigationLink(destination: AddList(), label: { // doesn't work within navigationBarItems
Image(systemName: "plus.circle.fill")
}))
}
Run Code Online (Sandbox Code Playgroud)
我希望AddList()视图出现,但在这两种情况下,它没有。
我有一个问题,当ViewModel视图更新时会重新初始化。
我有 2 个视图,SongListView它们PlayerView共享一个Player. 当玩家的播放状态改变时(isPlaying == true),viewModelinSongListView重置并变为空数组。因此,我视图中的列表变为空。
歌曲列表查看:
struct SongListView: View {
@ObservedObject var model: SongListViewModel = SongListViewModel() // This resets when player.isPlaying is set to true
@ObservedObject var player: Player
var body: some View {
List(model.songs, id: \.id) { song in
Button(action: {
self.player.play(link: song.link)
}) {
TitleRowView(title: song)
}
}
.onAppear {
self.model.get()
}
.navigationBarTitle(Text("Songs"), displayMode: .inline)
}
}
Run Code Online (Sandbox Code Playgroud)
歌曲列表视图模型:
class SongListViewModel: ObservableObject { …Run Code Online (Sandbox Code Playgroud)