Передача уведомлений от одного Viewcontroller к другому в Swift? - PullRequest
0 голосов
/ 27 апреля 2018

Я хочу отправить уведомление от одного (1-го) ViewController к (2-му) другому ViewController, пока это уведомление принимает функцию первого ViewController и печатает результат функции. Как я могу это сделать? Пожалуйста, помогите, я обыскал весь интернет безрезультатно.

Ответы [ 2 ]

0 голосов
/ 28 апреля 2018

Вы можете легко использовать протоколы для передачи данных между контроллером и наблюдателем

Шаг 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")
        }
    }
}
0 голосов
/ 27 апреля 2018

Попробуйте это

Сообщение Уведомление: (Первый ViewController)

NotificationCenter.default.post(name: Notification.Name("NotificationIdentifier"), object: nil, userInfo: ["key":"value"])

Получить уведомление: (Второй ViewController)

NotificationCenter.default.addObserver(self, selector: #selector(self.ReceivedNotification(notification:)), name: Notification.Name("NotificationIdentifier"), object: nil)

Способ обработки полученного уведомления:

@objc func ReceivedNotification(notification: Notification){

    //Take Action on Notification

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...