如果我设置一个自定义后退按钮(每个人都想要,隐藏丑陋的文本 ;-) )并使用 .navigationBarBackButtonHidden,导航控制器上的标准向后滑动手势不起作用。有没有办法让这个回来并有一个自定义的后退按钮?
例如:
NavigationView {
NavigationLink(destination: DummyViewer())
{
Text("Go to next view"
}
}
Run Code Online (Sandbox Code Playgroud)
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")
}
)
}
}
Run Code Online (Sandbox Code Playgroud)
如果我这样做,我将无法返回到之前的视图,似乎手势被禁用了......如何取回它?
BR史蒂芬
Nic*_*cci 33
我发现创建自定义 NavigationView 没有任何效果,但我发现通过扩展UINavigationController
我能够拥有自定义后退按钮和向后滑动手势。
extension UINavigationController: UIGestureRecognizerDelegate {
override open func viewDidLoad() {
super.viewDidLoad()
interactivePopGestureRecognizer?.delegate = self
}
public func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
return viewControllers.count > 1
}
}
Run Code Online (Sandbox Code Playgroud)
小智 27
我想整合Nick Bellucci 给出的答案,使代码也可以在其他情况下工作,例如当 NavigationView 的子视图是 ScrollView 或正在侦听拖动手势的 View 时。
extension UINavigationController: UIGestureRecognizerDelegate {
override open func viewDidLoad() {
super.viewDidLoad()
interactivePopGestureRecognizer?.delegate = self
}
public func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
return viewControllers.count > 1
}
// To make it works also with ScrollView
public func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
true
}
}
Run Code Online (Sandbox Code Playgroud)
Moj*_*ini -1
您可以将标题设置为空string
。所以后栏按钮标题将为空:
struct ContentView: View {
var body: some View {
NavigationView {
NavigationLink(destination: Text("Here you are")) {
Text("Next").navigationBarTitle("")
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
您可以设置标题onAppear
,或者onDisappear
如果需要的话。
归档时间: |
|
查看次数: |
3600 次 |
最近记录: |