Ios @已发布的变量未更新子视图
我的问题是@Published变量没有更新我的swiftui子视图。它会从false变为true,但是视图本身不会更新。下面我粘贴了我的问题的一个非常简化的版本。另外,我将在Ios @已发布的变量未更新子视图,ios,swift,swiftui,Ios,Swift,Swiftui,我的问题是@Published变量没有更新我的swiftui子视图。它会从false变为true,但是视图本身不会更新。下面我粘贴了我的问题的一个非常简化的版本。另外,我将在FirstView中创建的api变量传递给子视图,但是视图仍然没有更改。如果这是不够的信息,你可以看看完整的项目,我可以分享它下面 import Foundation import SwiftUI struct FirstView: View { @ObservedObject var Api = API
FirstView
中创建的api变量传递给子视图
,但是视图仍然没有更改。如果这是不够的信息,你可以看看完整的项目,我可以分享它下面
import Foundation
import SwiftUI
struct FirstView: View {
@ObservedObject var Api = API()
var body: some View {
VStack{
SubView()
Button(action:{
Api.apicall()
}){
Text("search")
}
}
}
}
struct SubView:View{
@ObservedObject var daApi = API()
var array = [1,2,3]
var body: some View{
ForEach(0..<array.count){ number in
Text("\(number)")
}
if daApi.viewPresent == true{
Text("Swag")
}
}
}
class API:ObservableObject{
@Published var viewPresent:Bool = false
func apicall(){
viewPresent = true
//The Long ApiCall
viewPresent = false
}
}
<代码>导入基础
导入快捷键
结构FirstView:视图{
@ObservedObject变量Api=Api()
var body:一些观点{
VStack{
子视图()
按钮(操作:{
Api.apicall()
}){
文本(“搜索”)
}
}
}
}
结构子视图:视图{
@ObservedObject var daApi=API()
变量数组=[1,2,3]
var body:一些观点{
ForEach(0..现在,您有两个不同的
API
实例。您需要在两个视图之间共享同一实例:
struct FirstView: View {
@ObservedObject var Api = API()
var body: some View {
VStack{
SubView(daApi: Api)
Button(action:{
Api.apicall()
}){
Text("search")
}
}
}
}
struct SubView:View{
@ObservedObject var daApi : API
var array = [1,2,3]
var body: some View{
ForEach(0..<array.count){ number in
Text("\(number)")
}
if daApi.viewPresent == true {
Text("Swag")
}
}
}
class API:ObservableObject{
@Published var viewPresent:Bool = false
func apicall(){
viewPresent = true
}
}
struct FirstView:View{
@ObservedObject变量Api=Api()
var body:一些观点{
VStack{
子视图(daApi:Api)
按钮(操作:{
Api.apicall()
}){
文本(“搜索”)
}
}
}
}
结构子视图:视图{
@观察对象变量daApi:API
变量数组=[1,2,3]
var body:一些观点{
ForEach(0..您正在使用两个API。您应该去观看过去两个WWDC中的SwiftUI数据流视频。这回答了您的问题吗?是的,回答了,谢谢。我发誓我已经做了,但我很愚蠢,这已经解决了。再次感谢