ios - 导航栏的默认返回行为不起作用

标签 ios swift uiviewcontroller uinavigationbar

我有一个 View Controller ,我需要在其中添加一个自定义后退按钮。所以我添加了一个自定义 backButtonItem。但是在添加自定义后退按钮后,我的 View Controller 通过滑动返回的默认行为停止按预期工作。

如果我从 View Controller 中删除自定义后退按钮, View Controller 的行为符合预期,但一旦我添加自定义后退按钮,默认行为就会停止。

我已经添加了这样的自定义后退按钮

self.navigationItem.leftBarButtonItem = getCustomBackBarButtonItem(viewController: self)

我曾尝试使用 backBarButtonItem 而不是 leftBarButtonItem,但这样做后自定义后退按钮不会出现,并且 View Controller 的行为符合预期。

如果我删除上面的代码, View Controller 的行为就如预期的那样,它可以通过滑动顺利返回。

最佳答案

您可以简单地添加以下行,而不是将委托(delegate)设置为自己:

self.navigationController?.interactivePopGestureRecognizer?.delegate = nil

因此它不会转到任何交互式 PopGestureRecognizer 的委托(delegate)方法,并且导航 Controller 的行为将按照您的期望进行。这是实现预期行为的小解决方法。

关于ios - 导航栏的默认返回行为不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47766394/

相关文章:

ios - 动画 Root View Controller 转换

Swift:将类方法作为函数参数传递(而不是泛型函数)

iphone - 使用 MKNetworkKit setImageFromURL 时如何获取图像帧?

arrays - Swift 的数组相等概念中的错误?

ios - Swift 中 AppDelegate 中的网络调用

swift - Moya 请求需要很长时间才能响应

swift - 无法调用 tableView 委托(delegate)和数据源方法

iphone - ios - 我可以使用来自另一个 ViewController 的 IBAction 吗?

iphone - NSArray 的前三项变成 NSString?

ios - 将 Base64string 转换为字符串时出现问题