Je souhaite savoir si je peux appeler une méthode de délégué d'application à partir d'un autre ViewController.
Lorsque l'application démarre, la méthode application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool
i est appelée. Puis-je appeler cette méthode une seconde fois à partir d'un autre contrôleur de vue?
Vous ne savez pas pourquoi vous voulez faire cela. Vous ne devriez probablement pas, mais pour répondre à la question, voici ceci:
// get a reference to the app delegate
let appDelegate: AppDelegate? = UIApplication.shared.delegate as? AppDelegate
// call didFinishLaunchWithOptions ... why?
appDelegate?.application(UIApplication.shared, didFinishLaunchingWithOptions: nil)
Dans Swift 3.0, vous pouvez appeler en tant que:
let appDelegate = UIApplication.shared.delegate as! AppDelegate
appDelegate.anyAppDelegateInstaceMethod()
Cette méthode est appelée une seule fois lorsque l'application est lancée. Vous ne pouvez pas de ViewController. Définissez plutôt une méthode définie par l'utilisateur dans AppDelegete. et appelez cette méthode à partir de ViewController. En obtenant objet de AppDelegate.
AppDelegate *appDel = (AppDelegate *)[UIApplication sharedApplication].delegate;
[appDel <Your method>];
Constructeurs:
Ajouter un constructeur dans AppDelegate Class à la fin du code
Swift 3.x
class func shared() -> AppDelegate
{
return UIApplication.shared.delegate as! AppDelegate
}
Swift 2.x
func appDelegate () -> AppDelegate
{
return UIApplication.sharedApplication().delegate as! AppDelegate
}
et ajoutez un var comme celui-ci
var boolForFun = Bool()
Comment utiliser la référence dans votre classe?
Méthode
pour des fonctions ou variables d'accès rapides 3x
AppDelegate.shared().boolForFun = true
pour le reste
appDelegate().methodFoo()
Variable
appDelegate().foo