在传递数据时向后滑动以关闭子项 VC

Swiping back to dismiss a child VC while passing data

我有一个包含 1 个父项 VC 和 1 个子项 VC 的导航控制器。数据在两者之间传递。在 Parent VC 上,我通过 prepareForSegue 将数据传递给 Child VC。在子 VC 返回父 VC 时,我正在通过自定义后退按钮展开转场传递数据。

来回传递数据效果很好。但是,我希望 Child VC 能够向右滑动以关闭,同时仍然传递与展开 segue 中相同的信息。

有没有办法使用滑动将数据传回父级,同时能够按下后退按钮展开?我使用的唯一手势方法是gestureRecognizerShouldBegin,它允许 Child VC 向右滑动。

extension ChildVC: UIGestureRecognizerDelegate {
    func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
        return true
    }
}

作为参考,这是我的放松方式:

@IBAction func unwindfromChild(_ sender: UIStoryboardSegue) {
    if let CVC = sender.source as? ChildVC {
        print("Unwind")
        dataReceived() // do stuff with the received data
    }
}

您可以简单地附加一个 swipeGestureRecognizer to your view, name the unwind segue in Interface Builder, and inside the target function trigger the unwind segue

我用稍微不同的方法解决了这个问题。我完全删除了 unwind segue。通过委托传递数据。在navigationController:willShow.

中调用委托方法