如果我设置了一个自定义的后退按钮(每个人都想要,隐藏丑陋的文本;-))并使用.navigationBarBackButtonHidden,则导航控制器上的标准“后退”手势不起作用。有没有办法将其恢复并具有自定义的后退按钮?
例如:
NavigationView {
NavigationLink(destination: DummyViewer())
{
Text("Go to next view"
}
}
struct DummyViewer: View {
@Environment(\.presentationMode) var presentationMode: Binding<PresentationMode>
var body: some View {
Text("Hello, World!").navigationBarBackButtonHidden(true)
.navigationBarItems(leading:
Button(action: { self.presentationMode.wrappedValue.dismiss()}) {
Text("Custom go back")
}
)
}
}
如果这样做,我将无法滑动回到上一个视图,似乎手势已被禁用...如何找回?
BR 斯蒂芬
答案 0 :(得分:6)
我发现创建自定义NavigationView没什么用,但是我发现通过扩展UINavigationController
,我可以拥有一个自定义后退按钮和后退手势。
extension UINavigationController: UIGestureRecognizerDelegate {
override open func viewDidLoad() {
super.viewDidLoad()
interactivePopGestureRecognizer?.delegate = self
}
public func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
return viewControllers.count > 1
}
}
答案 1 :(得分:0)
您可以将标题设置为空的string
。所以后退栏按钮标题将为空:
struct ContentView: View {
var body: some View {
NavigationView {
NavigationLink(destination: Text("Here you are")) {
Text("Next").navigationBarTitle("")
}
}
}
}
您可以根据需要设置标题onAppear
或onDisappear
。
答案 2 :(得分:0)
如果仍然是here I answered,如何设置自定义后退按钮和保存后退手势。