Похоже, ошибка в SwiftUI.Вероятно, это связано с тем, что onDisappear
никогда не вызывается.Вы можете убедиться в этом, добавив
.onAppear{
print("Profile appeared")
}.onDisappear{
print("Profile disappeared")
}
к ProfileHost
представлению.Было бы разумно, чтобы appear
был сбалансирован disappear
для завершения увольнения.
Можно обойти это, реализовав функцию, которая возвращает PresentationButton
, которая "зависит«на переменную состояния.
@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.