我在SwiftUi中遇到了一个很大的问题。真正简单的NavigationView层次结构中的“后退按钮”在第三个视图上消失。如果我进一步查看,则“后退”按钮又在那里,我可以返回。
我进行了3小时的搜索,但只找到了SwiftUI: Back button disappears when clicked on NavigationLink
显然这不能解决我的问题。
感谢您的帮助!
答案 0 :(得分:4)
对于不想使用已弃用方法的人,我找到了另一种解决方法。
只需添加您的.toolbar
这个ToolBarItem
:
.toolbar {
// ... other toolbar items
ToolbarItem(placement: .navigationBarLeading) {
Text("")
}
}
答案 1 :(得分:3)
另一个似乎适用于 Xcode 12.4
的解决方案:
ToolbarItem(placement: .navigationBarLeading) {
HStack {}
}
答案 2 :(得分:1)
我发现了问题!
NavigationView上的.toolbar修饰符以Buggy方式隐藏“后退”按钮!
答案 3 :(得分:1)
对我来说,问题有点不同-后退按钮仅在与第三个视图互动后才在第三个视图上消失。点击进入列表视图。
我的解决方法是使用旧的.navigationBarItems而不是.toolbar,因此:
.navigationBarItems(trailing:
Menu {
Button(action: {
//some action
}) {
//some label
}
Button(action: {
//some action
}) {
//some label
}
}
label: {
//some label
}
)
代替:
.toolbar {
ToolbarItem(placement: .navigationBarTrailing) {
Menu {
Button(action: {
//some action
}) {
//some label
}
Button(action: {
//some action
}) {
//some label
}
}
label: {
//some label
}
}
}
答案 4 :(得分:1)
如果你想让你的代码更干净
/// A ToolbarItem wrapper to work around the back button disappearance bug in SwiftUI 2.
struct NavbarBackButtonDisappearanceWorkaroundItem: ToolbarContent {
var body: some ToolbarContent {
ToolbarItem(placement: .navigationBarLeading) {
Color.clear
}
}
}
使用如下:
.toolbar {
NavbarBackButtonDisappearanceWorkaroundItem()
SomeOtherUsefulItem()
}
答案 5 :(得分:-1)
您需要添加到您的 NavigationView
.navigationViewStyle(StackNavigationViewStyle())