在iOS开发中,可以通过代理模式或者通知中心来实现在两个相同的ViewControllers中收到相同的回调。
示例代码如下:
// 定义协议
protocol CallbackDelegate: AnyObject {
func didReceiveCallback()
}
// 第一个ViewController
class FirstViewController: UIViewController {
weak var delegate: CallbackDelegate?
func openSecondViewController() {
let secondViewController = SecondViewController()
secondViewController.delegate = self
// 打开第二个ViewController
}
// 实现代理方法
func didReceiveCallback() {
// 处理回调
}
}
// 第二个ViewController
class SecondViewController: UIViewController {
weak var delegate: CallbackDelegate?
func someAction() {
// 触发回调
delegate?.didReceiveCallback()
}
}
示例代码如下:
// 第一个ViewController
class FirstViewController: UIViewController {
func openSecondViewController() {
let secondViewController = SecondViewController()
// 注册通知
NotificationCenter.default.addObserver(self, selector: #selector(didReceiveCallback), name: NSNotification.Name("CallbackNotification"), object: nil)
// 打开第二个ViewController
}
// 发送通知
@objc func didReceiveCallback() {
NotificationCenter.default.post(name: NSNotification.Name("CallbackNotification"), object: nil)
}
}
// 第二个ViewController
class SecondViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// 监听通知
NotificationCenter.default.addObserver(self, selector: #selector(handleCallback), name: NSNotification.Name("CallbackNotification"), object: nil)
}
// 处理回调
@objc func handleCallback() {
// 处理回调
}
}
以上是两种常用的方法来实现在两个相同的ViewControllers中收到相同的回调。根据具体的需求和场景,选择适合的方法来实现回调功能。
领取专属 10元无门槛券
手把手带您无忧上云