2013-07-18 15 views
11

現在ロードされているストーリーボードが何であるか知りたいのですが、私は以下のコードを使用しましたが、現在のストーリーボードではありません。現在のストーリーボード名を知るには?

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

答えて

11

あなたが最も簡単な方法があるinstantiedやストーリーボードを通じてseguesされるのUIViewControllerクラスで作業している場合:

UIStoryboard *storyBoard = self.storyboard; 

あなたがのUIViewController

であるUIViewクラスである場合
UIResponder *responder = self; 
while (![responder isKindOfClass:[UIViewController class]]) { 
    responder = [responder nextResponder]; 
    if (nil == responder) { 
     break; 
    } 
} 
UIViewController *viewController = (UIViewController *) responder; 
UIStoryboard *storyBoard = viewController.storyboard; 
+7

私は名前を取得できますか? ? – wod

-2

ただ、これを行う、これはあなたのクエリ解決することがあり

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

私の質問を理解できないかもしれない、私はストーリーボードの名前を設定していない名前を知りたい – wod

+0

あなたはこのリンクを通過しましたか:http://stackoverflow.com/questions/14928817/identify-which-storyboard-is - アクティブ –

28

上記Duricanの答えのビル:ビューコントローラ内

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

(名前は ".storyboard" ファイル名の拡張子は含まれません。)

+0

完璧なソリューション。ありがとう。 – VaporwareWolf

+0

質問。どのようにこれを考え出したのですか?ドキュメンテーションは、名前のプロパティについて何も言わない。私はすべてのキーのどちらかを照会する方法を見ません。あなたはIBラベルからそれを刺しましたか? – VaporwareWolf

+0

ちょうど完全な推測、私はそれをテストし、私は正しいことが判明。 :) – Xiphias

関連する問題