【问题标题】:Adding an action to back swipes swift 4添加一个动作以快速向后滑动 4
【发布时间】:2019-01-07 22:11:04
【问题描述】:

我已将其中一个视图控制器中导航栏中的后退按钮更改为自定义按钮,并在按下该按钮时为该按钮提供了一个操作:

self.navigationItem.hidesBackButton = true
let backButton = UIBarButtonItem(image: UIImage(named: "backArrow"), style: .plain, target: self, action: #selector(self.back))
self.navigationItem.leftBarButtonItem = backButton

这很完美,我可以通过以下方式保持向后滑动以弹出视图控制器:

self.interactivePopGestureRecognizer?.isEnabled = true
self.interactivePopGestureRecognizer?.delegate = self

在我的导航控制器文件中。不幸的是,当我向后滑动时,我无法(或者我还没有弄清楚)调用我的视图控制器中的 back() 函数来更改后退按钮。我如何以及在哪里检测到我正在滑动以返回,以便我可以调用该特定视图控制器中的后退函数?

【问题讨论】:

    标签: ios swift uinavigationcontroller back


    【解决方案1】:

    喜欢这个答案你可以订阅手势:https://stackoverflow.com/a/36893464/1484378

    // In UINavigationController
    
    override func viewDidLoad() {
        super.viewDidLoad()
        self.interactivePopGestureRecognizer?.addTarget(self, action:#selector(self.handlePopGesture))
    }
    
    @objc func handlePopGesture(gesture: UIGestureRecognizer) -> Void {
        if gesture.state == .began {
            back()
        }
    }
    

    您可能需要添加一些自定义逻辑来访问视图控制器的返回方法,例如:if let vc = visibleViewController as? MyViewController { vc.back() }

    【讨论】:

    • 快乐是我的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-27
    • 2014-10-31
    • 1970-01-01
    • 2013-10-23
    • 2014-12-27
    相关资源
    最近更新 更多