我想在按钮动作内的另一个视图中解散我的视图控制器。我的意思是说,我有一个取消按钮内部UIView,我想把我的viewController cancelButton。我该怎么做呢?
@objc func cancelButtonTapped() {
}
我建议创建一个委托来引用你想要解散的视图控制器:
protocol ViewDelegate {
func dismissViewController()
}
然后让你的视图控制器继承这个委托,并确保创建一个contentviewcontroller函数来符合协议:
class ViewController: UIViewController, ViewDelegate {
func dismissViewController() {
self.dismiss(animated: true, completion: nil)
}
}
最后,将这个委托的引用传递给你的视图,并使用遣散viewcontroller函数:
class CustomView: UIView {
var delegate: ViewDelegate?
@objc func cancelButtonTapped() {
delegate.dismissViewController()
}
}
这个问题回答了如何使用firstResponder从UIView到达UIViewController。不建议这样做。
你的其他选择都围绕着某种pub/sub模式。你可以使用NotificationCenter发布一个消息,你的UIViewController可以监听。
您也可以使用Combine并在那里使用某种发布者来达到相同的效果。PassthroughSubject可能就是你要找的。