url 更改 SwiftUI 时强制重新加载图像
Force reload Image when url changes SwiftUI
新(对 swiftui),我想在 url 准备好后立即显示图像(刷新视图)。显然状态变量不够。似乎 .onReceive 和发布者可能会有所帮助,但我很无助。
注意:我使用 KingFisher,但对于任何加载器来说似乎都是一样的情况。这种情况似乎很特殊(url 未在创建视图时准备好)但这是一个更一般的主题:例如,当请求同步和个人资料照片时需要在其他用户更改时更新。
编辑:经过更多测试,如果我们使用 dispachQueue 推迟一秒钟然后尝试更新,则视图似乎已更新。使用 firebase onAppear
直接检索值时不会更新
import SwiftUI
import Firebase
import Kingfisher
struct Test4: View {
@State private var mProfilePhotoUrl: URL = URL(string:"0")!
var body: some View {
VStack(alignment: .center,spacing : 0){
KFImage(mProfilePhotoUrl)
}.onAppear(){
setUpProfileElements()
}
}
private func setUpProfileElements(){
// FirebaseRequest -> mProfilePhotoUrl = URL(string: User.profilePhoto)
}
}
这是jnpdx的答案!
我不知道原因,如果距离显示太近,但是视图不会随着 firebase 请求 onAppear 更新,使用 id 强制刷新。
struct Test4: View {
@State private var mProfilePhotoUrl: URL = URL(string:"0")!
*@State private var ID = 0*
var body: some View {
VStack(alignment: .center,spacing : 0){
KFImage(mProfilePhotoUrl)*.id(ID)*
}.onAppear(){
setUpProfileElements()
}
}
private func setUpProfileElements(){
// FirebaseRequest -> mProfilePhotoUrl = URL(string: User.profilePhoto)
// *-> self.ID += 1*
}
}
新(对 swiftui),我想在 url 准备好后立即显示图像(刷新视图)。显然状态变量不够。似乎 .onReceive 和发布者可能会有所帮助,但我很无助。 注意:我使用 KingFisher,但对于任何加载器来说似乎都是一样的情况。这种情况似乎很特殊(url 未在创建视图时准备好)但这是一个更一般的主题:例如,当请求同步和个人资料照片时需要在其他用户更改时更新。
编辑:经过更多测试,如果我们使用 dispachQueue 推迟一秒钟然后尝试更新,则视图似乎已更新。使用 firebase onAppear
直接检索值时不会更新import SwiftUI
import Firebase
import Kingfisher
struct Test4: View {
@State private var mProfilePhotoUrl: URL = URL(string:"0")!
var body: some View {
VStack(alignment: .center,spacing : 0){
KFImage(mProfilePhotoUrl)
}.onAppear(){
setUpProfileElements()
}
}
private func setUpProfileElements(){
// FirebaseRequest -> mProfilePhotoUrl = URL(string: User.profilePhoto)
}
}
这是jnpdx的答案! 我不知道原因,如果距离显示太近,但是视图不会随着 firebase 请求 onAppear 更新,使用 id 强制刷新。
struct Test4: View {
@State private var mProfilePhotoUrl: URL = URL(string:"0")!
*@State private var ID = 0*
var body: some View {
VStack(alignment: .center,spacing : 0){
KFImage(mProfilePhotoUrl)*.id(ID)*
}.onAppear(){
setUpProfileElements()
}
}
private func setUpProfileElements(){
// FirebaseRequest -> mProfilePhotoUrl = URL(string: User.profilePhoto)
// *-> self.ID += 1*
}
}