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 = 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:

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

回到顶部