SwiftUI - navigationBarBackButtonHidden - 向后滑动手势?
Posted
技术标签:
【中文标题】SwiftUI - navigationBarBackButtonHidden - 向后滑动手势?【英文标题】:SwiftUI - navigationBarBackButtonHidden - swipe back gesture? 【发布时间】:2019-12-08 11:34:32 【问题描述】:如果我设置了一个自定义后退按钮(每个人都想要,隐藏丑陋的文本 ;-))并使用 .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 史蒂芬
【问题讨论】:
这能回答你的问题吗? Hide navigation bar without losing swipe back gesture in SwiftUI 【参考方案1】:我发现创建自定义 NavigationView 没有任何效果,但我发现通过扩展 UINavigationController
我能够拥有自定义后退按钮和向后滑动手势。
extension UINavigationController: UIGestureRecognizerDelegate
override open func viewDidLoad()
super.viewDidLoad()
interactivePopGestureRecognizer?.delegate = self
public func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool
return viewControllers.count > 1
【讨论】:
这仍然有效(ios 13.2 上的 Xcode 11.4.1) 仍然适用于 iOS 14.2。多么强大的咒语! 在 14.5 中仍然有效,谢谢!我想知道这意味着什么,因为这将应用于全球所有导航控件 适用于 iOS 15 Developer Beta 1 这太棒了【参考方案2】:如果它仍然是实际的,here I answered,如何设置自定义返回按钮并保存滑动返回手势。
【讨论】:
【参考方案3】:您可以将标题设置为空的string
。所以后退栏按钮标题将为空:
struct ContentView: View
var body: some View
NavigationView
NavigationLink(destination: Text("Here you are"))
Text("Next").navigationBarTitle("")
您可以根据需要设置标题onAppear
或onDisappear
。
【讨论】:
嗨,我添加了更多信息。这是关于后退按钮和它导致的滑动手势 - 或不是。以上是关于SwiftUI - navigationBarBackButtonHidden - 向后滑动手势?的主要内容,如果未能解决你的问题,请参考以下文章
SwiftUI NavigationLink 如何到达另一个 SwiftUI 页面?
SwiftUI - 如何在 SwiftUI 中弹出到特定视图?