- Использование протокола
Сначала создайте протокол
protocol MyDelegate {
public yourMethod(param: String);
}
В вашем ViewController вам нужно расширить его от Protocol и установить для него AppDelegate
class YourViewController: MyDelegate {
// Your Other methods
override func viewDidLoad() {
super.viewDidLoad()
// set your delegate to Appdelegate
let appDelegate = UIApplication.shared.delegate as! AppDelegate
appDelegate.yourDelegate = self;
}
func yourMethod(param: String) {
// Do your stuff
}
}
Теперь, наконец, в AppDelegate объявите объект протокола и вызовите yourMethod через его ссылку.
class AppDelegate: UIApplicationDelegate {
public yourDelegate: MyDelegate!;
}
Теперь вы можете вызывать свой метод в любом месте вашего AppDelegate, например
yourDelegate.yourMethod(params);
Использование NotificationCenter
Самый простой способ - это использовать NotificationCenter.Сначала вам нужно добавить расширение к Notification.Name в любом месте вашего приложения.Например,
extension Notification.Name { static let mynotification = Notification.Name("mynotification") }
В вашем контроллере view метод viewDidLoad добавляет
NotificationCenter.default.addObserver(self, selector: #selector(yourMethod), name: NSNotification.Name.mynotification, object: nil)
Затем в вашем ViewController добавьте метод, который будет вызываться при срабатывании уведомления
func yourMethod(){
//// do something
}
Сейчасв делегате приложения или даже в любом месте приложения вы можете вызвать метод viewController, отправив уведомление, например
NotificationCenter.default.post(name: NSNotification.Name.mynotification, object: nil)