【问题标题】:SwiftUI - navigationBarBackButtonHidden - swipe back gesture?SwiftUI - navigationBarBackButtonHidden - 向后滑动手势?
【发布时间】: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 史蒂芬

【问题讨论】:

标签: 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("")
                }
            }
        }
    }
    

    您可以根据需要设置标题onAppearonDisappear

    【讨论】:

    • 嗨,我添加了更多信息。这是关于后退按钮和它导致的滑动手势 - 或不是。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-10
    • 2015-10-22
    • 1970-01-01
    相关资源
    最近更新 更多