2012-04-12 7 views
1

Hier ist die applicationDidFinishLaunching Methode zur ECSlidingViewController Code Demo:Zugriff auf den rootViewController von UIWindow?

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    ECSlidingViewController *slidingViewController = (ECSlidingViewController *)self.window.rootViewController; 
    UIStoryboard *storyboard; 

    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) { 
    storyboard = [UIStoryboard storyboardWithName:@"iPhone" bundle:nil]; 
    } else if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { 
    storyboard = [UIStoryboard storyboardWithName:@"iPad" bundle:nil]; 
    } 

    slidingViewController.topViewController = [storyboard instantiateViewControllerWithIdentifier:@"FirstTop"]; 

    return YES; 
} 

Was Sinn für mich nicht die erste Zeile machen:

ECSlidingViewController *slidingViewController = (ECSlidingViewController*)self.window.rootViewController; 

ich einfach nicht, wie Sie greifen der root view controller des window, und guss es so wie du willst? Was genau macht diese Linie und wie funktioniert sie?

Antwort

4

In Ihrem Storyboard haben Sie eine Szene für Ihren Root-View-Controller eingerichtet (d. H. Das Kontrollkästchen rootViewController ist in den Eigenschaften aktiviert und der anfängliche Pfeil auf der Zeichenfläche zeigt auf diesen View-Controller). Die Klasse für diesen Ansichtscontroller wird im Eigenschafteninspektor festgelegt. In Ihrem Fall ist die Klasse auf ECSlidingViewController eingestellt. Dies legt die Klasse des Objekts fest, das das Storyboard instanziiert.

UIWindow hat eine Eigenschaft rootViewController, die dieses Objekt zurückgibt. Der Typ der Eigenschaft auf UIWindow ist UIViewController - also weiß das Fenster, dass es ein View-Controller ist, aber es kennt keine weiteren Details. Ihre ECSlidingViewController Klasse ist eine Unterklasse von UIViewController. Wenn es zurückgegeben wird, wird es von Ihrem Code als ein spezifischeres Objekt umgewandelt, so dass Sie damit als das spezifischere Objekt arbeiten können, das es tatsächlich ist.

Verwandte Themen