Как узнать текущее имя раскадровки?
Я хочу знать, что представляет собой текущий загруженный раскадровки, я использовал приведенный ниже код, но он по-прежнему получает от меня основной раскадровки, а не текущий.
//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];