Вы можете легко использовать протоколы для передачи данных между контроллером и наблюдателем
Шаг 1 Создание заглушки протокола
/// Protcol
@objc protocol showViews : class {
/// An optional func inside protocol that will
/// be used to pass the required Data
/// For now, I am just passing a Bool Value
@objc optional func showToggleMenu(needToShow:Bool)
}
Source ViewController - Контроллер, с которого должны передаваться данные
/// Source Controller
class mainHomeVC: UIViewController
{
/// Create a referencing object for the protocol
var delegate : showViews?
/// To pass data just call the delegate and its function
@IBAction func showToggleMenu(_ sender: UIButton)
{
/// Pass Data
delegate?.showToggleMenu!(needToShow: true)
}
}
Конечный контроллер Контроллер, в котором требуется передать данные
/// Destination Controller
class homeVC: UIViewController
{
/// Create a reference of class from which data is to be fetched
private lazy var mainHomeVCObjet: mainHomeVC =
{
// Instantiate View Controller
let viewController = self.storyboard?.instantiateViewController(withIdentifier: "mainHomeVC") as! mainHomeVC
viewController.delegate = self
// Add View Controller as Child View Controller
self.addChildViewController(viewController)
return viewController
}()
}
//MARK: Protocol Extension
extension homeVC : showViews
{
//MARK: Show Side Menu ?
func showToggleMenu(needToShow: Bool)
{
if (needToShow)
{
print("time to show a toggle Menu")
}
}
}