2013-04-11 4 views
7

Попытка моей руки в универсальном проекте, я бы хотел загрузить vc по идентификатору из раскадровки. Есть ли способ избежать явной проверки идиомы при доступе к раскадровке.Получить основную раскадровку в универсальном приложении

Этот уродливый код работает ....

UIStoryboard *storyboard; 

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

UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"MyViewController"]; 

Но гадость. Строковую литеральную основную раскадровку достаточно сложно посмотреть (не знаю, почему проект не может сохранить основную настройку раскадровки, чтобы приложения могли говорить [UIStoryboard mainStoryboard];), но явная проверка идиомы - это слишком большой мост.

Есть ли скрытый интеллект (сопоставимый с суффиксами «@ 2x», поддерживающий дисплеи сетчатки), которые могли бы очистить этот код?

ответ

16

Предполагая, что вы выполняете опубликованный код из другого контроллера вида, вы всегда можете получить текущую раскадровку через [self storyboard], где self - это любой экземпляр UIViewController.

+1

Спасибо. Две птицы с одним камнем. Жаль, что я не смог бы удвоить. – danh

+0

Спасибо, Десмонд! – Oritm

Смежные вопросы