在传递数据时向后滑动以关闭子 VC
Posted
技术标签:
【中文标题】在传递数据时向后滑动以关闭子 VC【英文标题】:Swiping back to dismiss a child VC while passing data 【发布时间】:2018-10-08 22:11:51 【问题描述】:我有一个包含 1 个父 VC 和 1 个子 VC 的导航控制器。数据在两者之间传递。在父 VC 上,我通过 prepareForSegue 将数据传递给子 VC。在子 VC 上返回到父 VC,我通过自定义后退按钮 unwind segue 传递数据。
来回传递数据效果很好。但是,我希望 Child VC 能够向右滑动以关闭,同时仍传递与 unwind segue 中相同的信息。
有没有办法通过滑动将数据传回父级,同时能够按下后退按钮展开?我使用的唯一手势方法是gestureRecognizerShouldBegin,它允许子 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
【问题讨论】:
为什么不创建自定义展开转场?? @Sh_Khan 并在哪里调用自定义展开segue?我只需要通过滑动将数据传递回父 VC 以关闭子 VC 【参考方案1】:您可以简单地将swipeGestureRecognizer 附加到您的视图,在Interface Builder 中命名展开segue,并在目标函数中命名trigger the unwind segue。
【讨论】:
这不起作用。添加 UIScreenEdgePanGestureRecognizer 可防止 ChildVC 向右滑动。【参考方案2】:我用稍微不同的方法解决了这个问题。我完全删除了 unwind segue。通过委托传递数据。委托方法在navigationController:willShow
中调用。
【讨论】:
以上是关于在传递数据时向后滑动以关闭子 VC的主要内容,如果未能解决你的问题,请参考以下文章
ios15在隐藏导航栏时向后半滑动会留下顶部空白空间 - SwiftUI
在传递 Cell 数据时向 CollectionViewCell 添加点击事件
将数据从 ViewController 传递回根 ViewController?