2013-07-18 7 views
11

Ich möchte wissen, was ist das aktuelle geladene Storyboard, ich habe den folgenden Code verwendet, aber es ist immer noch das Main Storyboard nicht die aktuelle.Wie kann ich den Namen des aktuellen Storyboards erkennen?

//This get me the Main storyboard 
[[NSBundle mainBundle].infoDictionary objectForKey:@"UIMainStoryboardFile"]; 

Antwort

11

Wenn Sie in einer UIViewController Klasse arbeiten, die einfachste Art und Weise instantied oder segues durch das Storyboard ist:

UIStoryboard *storyBoard = self.storyboard; 

Wenn Sie in einem UIView Klasse sind, die in einem UIViewController ist

UIResponder *responder = self; 
while (![responder isKindOfClass:[UIViewController class]]) { 
    responder = [responder nextResponder]; 
    if (nil == responder) { 
     break; 
    } 
} 
UIViewController *viewController = (UIViewController *) responder; 
UIStoryboard *storyBoard = viewController.storyboard; 
+7

, wie ich den Namen bekommen? ? – wod

-2

Genau dies tun, kann dies Ihre Anfrage

NSString *storyboardName; 
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { 
    storyboardName = @"iPad"; 
} else { 
    storyboardName = @"iPhone"; 
} 
UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:storyboardName bundle:nil]; 
lösen
+0

vielleicht verstehst du meine Frage nicht, ich möchte wissen, dass der Name nicht den Namen des Storyboards – wod

+0

haben Sie diesen Link gegangen: http://stackoverflow.com/questions/14928817/identify-which-storyboard-is -active –

28

Aufbauend auf Durican Antwort oben:

Innerhalb eines View-Controller:

UIStoryboard * storyboard = self.storyboard; 
NSString * storyboardName = [storyboard valueForKey:@"name"]; 

(Der Name wird die ".storyboard" Dateinamenerweiterung nicht enthalten.)

+0

Perfekte Lösung. Vielen Dank. – VaporwareWolf

+0

Frage. Wie bist du darauf gekommen? Die Dokumentation sagt nichts über eine Namenseigenschaft aus. Ich sehe auch keine Möglichkeit, alle Schlüssel abzufragen. Hast du einen Stich von den IB-Etiketten gemacht? – VaporwareWolf

+0

Nur eine vollständige Schätzung, ich habe es getestet und es stellt sich heraus, dass ich Recht hatte. :) – Xiphias