SwiftUI教程PresentationButton Bug
我开始尝试在WWDC
2019上宣布的新SwiftUI框架,并在https://developer.apple.com/tutorials/swiftui上开始了该教程。
现在,我谈到了通过来将Profile连接到HomeScreen的地步PresentationButton
。更确切地说,我在谈论以下代码部分Home.swift
:
.navigationBarItems(trailing: PresentationButton(
Image(systemName: "person.crop.circle")
.imageScale(.large)
.accessibility(label: Text("User Profile"))
.padding(),
destination: ProfileHost()
)
)
当我第一次单击该按钮时,“配置文件”看起来很好,但是当我关闭它,然后再次单击该按钮时,什么也没有发生。
有谁知道为什么会这样吗?
提前致谢
回答:
它看起来像SwiftUI中的错误。它可能与onDisappear
从未被调用的事实有关。您可以通过添加来验证
.onAppear{ print("Profile appeared")
}.onDisappear{
print("Profile disappeared")
}
到ProfileHost
视图。为了完成解雇,appear
应该以权衡一个disappear
,这是有道理的。
可以通过实现返回PresentationButton
“依赖”状态变量的a的函数来解决该问题。
@State var profilePresented: Int = 0func profileButton(_ profilePresented: Int) -> some View {
return PresentationButton(
Image(systemName: "person.crop.circle")
.imageScale(.large)
.accessibility(label: Text("User Profile"))
.padding(),
destination: ProfileHost(),
onTrigger: {
let deadlineTime = DispatchTime.now() + .seconds(2)
DispatchQueue.main.asyncAfter(deadline: deadlineTime, execute: {
self.profilePresented += 1
})
})
}
并更换
.navigationBarItems(trailing: PresentationButton(
Image(systemName: "person.crop.circle")
.imageScale(.large)
.accessibility(label: Text("User Profile"))
.padding(),
destination: ProfileHost()
)
)
与
.navigationBarItems(trailing: self.profileButton(self.profilePresented))
我强烈建议不要使用此“解决方案”,而应将错误报告给Apple。
以上是 SwiftUI教程PresentationButton Bug 的全部内容, 来源链接: utcz.com/qa/416925.html