web-dev-qa-db-fra.com

Appelez la méthode de délégué d'application à partir du contrôleur de vue

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?

12
Memon Irshad

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()
22
Tejinder

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>];
7
sschunara

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
1
Anurag Sharma