在这种特定情况下,当我尝试更改@EnvironmentObject的时@Published var,我发现该视图并没有立即失效并立即更新。相反,仅在离开模态并返回后,才会反映对变量的更改。
import SwiftUI
final class UserData: NSObject, ObservableObject {
@Published var changeView: Bool = false
}
struct MasterView: View {
@EnvironmentObject var userData: UserData
@State var showModal: Bool = false
var body: some View {
Button(action: { self.showModal.toggle() }) {
Text("Open Modal")
}.sheet(isPresented: $showModal, content: {
Modal(showModal: self.$showModal)
.environmentObject(self.userData)
} )
}
}
struct Modal: View {
@EnvironmentObject var userData: UserData
@Binding var showModal: Bool
var body: some View {
VStack {
if userData.changeView { …Run Code Online (Sandbox Code Playgroud) 在中Assets.xcassets,可以添加其他图像,这些图像将根据外观自动切换。这对于静态图像效果很好,但是我试图弄清楚如何对下载的图像执行此操作。
有没有办法设置Imageinit 的暗模式版本,或者SwiftUI中是否有一个函数可以让您检测当前外观是否为暗,以便可以提供其他图像URL?