我在使用SwiftUi时遇到了一个大问题。在非常简单的NavigationView层次结构中,“Backbutton”在第三个视图上消失了。如果我再向前进入一个视图,则Backbutton又会出现,我就可以返回。
我搜索了3个小时,但只找到了这篇SwiftUI: Back button disappears when clicked on NavigationLink
显然,这无法解决我的问题。
感谢任何帮助!
我在使用SwiftUi时遇到了一个大问题。在非常简单的NavigationView层次结构中,“Backbutton”在第三个视图上消失了。如果我再向前进入一个视图,则Backbutton又会出现,我就可以返回。
我搜索了3个小时,但只找到了这篇SwiftUI: Back button disappears when clicked on NavigationLink
显然,这无法解决我的问题。
感谢任何帮助!
对我来说,问题有点不同 - 在与第三个视图交互后,即点击列表视图后,返回按钮仅在第三个视图上消失。
我的解决方法是使用旧的.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
}
}
}
我发现了另一个适用于不想使用废弃方法的解决方法。
只需在您的.toolbar
中添加此ToolBarItem
:
.toolbar {
// ... other toolbar items
ToolbarItem(placement: .navigationBarLeading) {
Text("")
}
}
在Xcode 12.4上似乎能够正常工作的另一种解决方案:
ToolbarItem(placement: .navigationBarLeading) {
HStack {}
}
/// 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()
}
我发现了问题!
NavigationView上的.toolbar修饰符以有缺陷的方式隐藏了返回按钮!
var body: some View {
ScrollView() {
...
}
.navigationBarItems(trailing: EmptyView())
}
'''
你需要添加到你的NavigationView中
.navigationViewStyle(StackNavigationViewStyle())