2010-12-28 4 views
6

Ich schreibe eine "Blackbox" -Bibliothek. In dieser Bibliothek muss ich eine Unteransicht zu jeder App hinzufügen, die meine Bibliothek verwendet.
Daher habe ich keinen Verweis auf die AppDelegate noch auf das UIWindow der Anwendung.
Das einzige, was die externe App jetzt tut, ist die folgende:
Abrufen des aktuellen aktiven UIWindow/appDelegate-Objekts, ohne die Apps-Objekte zu halten

myRec = [[Rec alloc] init]; 
myRec.delegate = self; 
[myRec start]; 

wo Rec ist die Blackbox Bibliothek und myRec ist die Instanz, die durch eine externe App verwendet wird.
Natürlich kann ich keinen Verweis auf die Ansicht der App durch das Delegat-Mitglied erhalten, da es nicht wie der bestimmte Typ der externen App definiert ist.

Irgendwelche Ideen, wie man das UIWindow object/appDelegate Objekt verstehen kann, ohne zu wissen, ihre Identität im Voraus ??

Danke !!

Antwort

20

App Delegierter Anfahrt:

id<UIApplicationDelegate> appDelegate = [[UIApplication sharedApplication] delegate]; 

Ab ins UIWindow Objekt:

UIWindow* window = [[UIApplication sharedApplication] keyWindow]; 
+0

Dank! Sieht gut aus ! – Guys

+0

Danke !!! Arbeiten wie Charme !! –

1
[[UIApplication sharedApplication] delegate] 

Wird immer wieder etwas entsprechen id<UIApplicationDelegate>

Btw, dies ist der richtige Weg, es zu tun, ein Protokoll erstellen, das einige Klassen in Ihrer Anwendung sollte auf (dh der AppDelegate) entsprechen und Übergeben Sie diese Klasse an Ihre Bibliothek. Ihre Bibliothek kann überprüfen, ob die Klasse dem Protokoll entspricht und falls nicht, mit einer Nachricht im Protokoll fehlschlagen.

0

@ phix23 seine Antwort in Swift 3:

if let appDelegate = UIApplication.shared.delegate, let window = appDelegate.window { 
    let yourview = window?.rootViewController?.view 
} 
Verwandte Themen