Frage

Ich weiß nicht, Wann oder warum sollte ich verwenden [[UIApplication sharedApplication] delegate]

Ich benutze delegieren, wenn [self.navigationController pushViewController:myView Animation:YES] funktioniert nicht navigieren.Ich MyView *delegate = [[UIApplication sharedApplication] delegate] und [delegate pushViewController:myView Animation:YES] um die navigation korrekt arbeiten.

Ich weiß nicht, ob die Lösung richtig ist und außerdem weiß ich nicht, was ist der nutzen für [[UIApplication sharedApplication] delegate] oder was sind Ihre Auswirkungen auf die Anwendung.

Kann mir jemand helfen?

Danke!!

War es hilfreich?

Lösung

[[UIApplication sharedApplication] delegate] wird Ihnen einen Zeiger geben dein App -Delegierter. Derjenige, der automatisch erstellt wurde, als Sie das Projekt erstellt haben. Normalerweise wird es benannt YourAppNameAppDelegate.

Zwei Dinge sind mit Ihrem Code ein wenig falsch.

  1. Wenn Sie deklarieren MyView *delegate Dies sollte entweder sein id delegate oder YourAppNameAppDelegate *delegate.

  2. Sie sollten nicht über den App -Delegierten auf Ihren NavigationController zugreifen müssen. Ich würde untersuchen, warum Self.NavigationController fehlschlägt und das angehen. Sie implementieren im Grunde ein Singleton -Muster, wenn Sie sich auf den App -Delegierten verlassen. Da das Singleton -Muster das am wenigsten coole Programmierdesign -Muster ist, wird es Ihnen keine Punkte gewinnen, wenn Sie mit anderen Programmierern über den Laden sprechen.

Andere Tipps

self.appDelegate = [[UIApplication sharedApplication] delegate];

Wenn Sie eine variable erstellen, genannt appDelegate in Ihrem IVars, es wird nicht nur festlegen, automatisch auf der app-Delegat - Sie haben, um es sich selbst.Von ÜBERALL in Ihrer Anwendung, haben Sie Zugriff auf das delegieren von der Anwendung singleton.

[UIApplication sharedApplication] <--- ermöglicht den Zugriff auf die singleton

Delegat-Methode gibt einen Zeiger auf den app-Delegaten.

So, da Ihre Variablen initialisiert werden, gibt es zwei logische Orte, es zu tun - man ist in die Initialisierung, wenn Sie eine erstellen oder eine Methode, die aufgerufen wird, in der Nähe der Beginn der Verwendung von einem view und sein controller, und dieser Ort ist in viewDidLoad.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top