2013-04-11 11 views
7

Próbując użyć uniwersalnego projektu, chciałbym załadować symbol VC według identyfikatora z storyboardu. Czy istnieje sposób na uniknięcie wyraźnego sprawdzenia idiomu podczas uzyskiwania dostępu do storyboardu.Pobierz główny scenorys w aplikacji uniwersalnej

Ten brzydki kod działa ....

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"]; 

Ale fuj. Podstawowy scenorys literowy jest wystarczająco trudny do analizy (nie ma pewności, dlaczego projekt nie może zapisać ustawienia głównego scenorysu, aby aplikacje mogły mówić [mainboard] UIStoryboard];) jednak wyraźne sprawdzanie idiomu jest mostem za daleko.

Czy istnieje jakakolwiek ukryta inteligencja (podobna do "@ 2x" sufiksów obrazu obsługujących wyświetlacze siatkówki), która może oczyścić ten kod?

Odpowiedz

16

Zakładając, że wykonujesz zaksięgowany kod z poziomu innego kontrolera widoku, zawsze możesz uzyskać aktualny scenorys przez [self storyboard], gdzie self jest dowolną instancją kontrolera UIViewController.

+1

Dzięki. Dwa ptaki z jednym kamieniem. Chciałbym móc dwukrotnie głosować. – danh

+0

Dziękuję Desmond! – Oritm