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