Как узнать текущее имя раскадровки?

Я хочу знать, что представляет собой текущий загруженный раскадровки, я использовал приведенный ниже код, но он по-прежнему получает от меня основной раскадровки, а не текущий.

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

Ответ 1

Если вы работаете в классе UIViewController, который появляется или проходит через раскадровку, самый простой способ:

UIStoryboard *storyBoard = self.storyboard;

Если вы находитесь в классе UIView, который находится в UIViewController

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

Ответ 2

Основываясь на ответе Дурикан выше:

Внутри контроллера вида:

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

(Имя не будет содержать расширение ".storyboard".)

Ответ 3

Просто сделайте это, это может решить ваш запрос

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