答案 0 :(得分:1)
我建议像这样使用NotificationCenter:
ContainerViewController.swift
NotificationCenter.default.post(name: NSNotification.Name(rawValue: "updateButtonColor"), object: nil, userInfo: nil)
MainViewController.swift
NotificationCenter.default.addObserver(self, selector: #selector(self.updateColor), name: NSNotification.Name(rawValue: "updateButtonColor"), object: nil)
@objc func updateColor() {
CartButton.tintColor = .green
}
答案 1 :(得分:0)
您可以使用如下所示的Delage方法。
import UIKit
protocol containerVCDelegate: class {
func changeBackgroundColor(_ color: UIColor?)
}
class containerVC: UIViewController {
weak var delegate: containerVCDelegate?
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func proceedClicked(_ sender: UIButton) {
delegate?.changeBackgroundColor(backgroundColor)
}
}
下面的代码应该在主Vc中
import UIKit
class mainVC: UIViewController, containerVCDelegate {
override func viewDidLoad() {
super.viewDidLoad()
containerVc.delegate = self
}
func changeBackgroundColor(_ color: UIColor?) {
view.backgroundColor = color
}
}
您可以在此处获得完整的项目:https://github.com/jamesrochabrun/DelegateTutorialFinal 请参阅this链接,以进一步了解 James Rochabrun 所写的这一概念。