我想做的是,当用户搜索时,将弹出一个按钮列表,当我单击该按钮时,我希望按钮用新数据更新视图。但对我而言,错误之处在于它不会更新视图,我曾尝试在ViewModel中打印数据并显示正确的数据,但是它不会刷新那些不在{{ 1}}和struct
。这是我所拥有的一个快速且最小的版本。
func
因此,上面带有struct TestPublished: View {
@ObservedObject var vm = ViewModelTest()
@State var selectedButton = ""
var body: some View {
VStack {
Text("TestPublished: \(vm.TripData.count)")
Button(action: {
selectedButton = "København"
self.searchButtonTest()
}, label: {
Text("København")
})
TestView(selectedButton: $selectedButton)
}
}
func searchButtonTest(){
// Updating view
let encodeButton = selectedButton.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)!
let urlString = "http://xmlopen.rejseplanen.dk/bin/rest.exe/trip?originId=8600790&destCoordX=12565562&destCoordY=55673063&destCoordName=\(encodeButton)&format=json"
self.vm.searchButtonTest(urlString: urlString)
}
}
的内容将刷新视图,但是我不明白的是,由于ViewModel中的数据已更改,那么TestPublished()
为什么不告诉{{1 }}是否获得了新数据并同时刷新了视图?
@ObservedObject