2013-06-13 15 views
23

Muszę utworzyć programowo programowanie, jednak po kliknięciu przycisku kontroler widoku nie zmienia się na następny, ustawienie ID scenorysu jest ustawione i nadal nie działa. Czy brakuje mi innych czeków, aby to zadziałało?instantiateViewControllerWithIdentifier - Identyfikator scenariusza, ale wciąż nie działa

Proszę zobaczyć kod poniżej:

EntryViewController *entryController = [self.storyboard instantiateViewControllerWithIdentifier:@"go"]; 
[self.navigationController pushViewController:entryController animated:YES]; 

jego doprowadza mnie do szału. Dzięki

+2

Czy 'self.storyboard' set czy jest to zero? – Wain

+0

@ Prawdopodobnie ustawiono zero, ponieważ nie ustawiłem go, gdzie mogę ustawić scenorys na własny rachunek? –

Odpowiedz

6

Zastosowanie

+ (UIStoryboard *)storyboardWithName:(NSString *)name bundle:(NSBundle *)storyboardBundleOrNil. 

Więc spróbuj tego

self.storyboard=[UIStoryboard storyboardWithName:@"Your_Story_Board_Name" bundle:[NSBundle mainBundle]]; 
EntryViewController *entryController = [self.storyboard instantiateViewControllerWithIdentifier:@"go"]; 
[self.navigationController pushViewController:entryController animated:YES]; 
+0

nie działa, dziękuję jednak –

+0

Użyłem tej odpowiedzi, aby utworzyć instancję soryboard w AppDelegate. Dzięki! –

0

Nie można ustawić kontrolerów widoku storyboard. Jest on tylko do odczytu i ustawiony po utworzeniu kontrolera widoku. Zamiast tego musisz pobrać scenorys z innego miejsca lub załadować go.

Można uzyskać scenorys z kontrolera widoku głównego aplikacji AppDelegate. Lub użyj + (UIStoryboard *)storyboardWithName:(NSString *)name bundle:(NSBundle *)storyboardBundleOrNil.

+0

Niestety nie działa Wain –

+0

W jaki sposób to nie zadziałało? – Wain

+0

Nie przechodzi do następnego kontrolera widoku. –

2

Spróbuj tego,

UIStoryboard * storyboardobj=[UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; 

EntryViewController *entryController = [storyboardobj instantiateViewControllerWithIdentifier:@"go"]; 
[self.navigationController pushViewController:entryController animated:YES]; 
+0

Szukałem innego przykładu takiego, po prostu wypróbowałem twoje i wciąż nie ma szczęścia! –

32

Wewnątrz mojego viewDidLoad umieściłem przycisk, który wywołuje goldStarOpen:

UIButton *btnTwo = [UIButton buttonWithType:UIButtonTypeCustom]; 
btnTwo.frame = CGRectMake(250, 20, 40, 40); 
[btnTwo addTarget:self action:@selector(goldStarOpen) forControlEvents:UIControlEventTouchUpInside]; 
[btnTwo setImage:[UIImage imageNamed:@"GoldStar.png"] forState:UIControlStateNormal]; 
[self.view addSubview:btnTwo]; 

Inside goldStarOpen Mam kod, który jest niemal identyczny do Ciebie.

- (void)goldStarOpen 
{ 
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName: 
           @"MainStoryboard" bundle:[NSBundle mainBundle]]; 
    UIViewController *myController = [storyboard instantiateViewControllerWithIdentifier:@"GoldStar"]; 
    [self presentViewController:myController animated:YES completion:nil]; 
} 

goldStarOpen aktywuje ViewController w storybooku.

Może być konieczne ustawienie ID scenariusza kontrolera widoku, który próbujesz załadować. Znajduje się on w inspektorze, tuż poniżej miejsca, w którym przypisujesz niestandardową klasę do kontrolera widoku.

enter image description here

+2

to powinna być zaakceptowana odpowiedź. – Richmond

+0

Miałem ten sam problem, rozwiązałem go, ustawiając odpowiedni moduł dla klasy w inspektorze (patrz zrzut ekranu powyżej). – chris

+0

Czy ktoś może odpowiedzieć na to pytanie? http://stackoverflow.com/questions/38959445/astoryboard-instantiateviewcontrollerwithidentifiermyid-returns-nil-but-not?noredirect=1#comment65274351_38959445 – harmeet07

3

spróbować Storyboard Wybierz UIViewController-> Xcode-> redaktora> Emabed In-> kontroler nawigacyjny

UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"YourStoryboard" 
                 bundle: nil]; 

YourViewController *vc = [mainStoryboard instantiateViewControllerWithIdentifier: @"YourViewController"]; 
[self.navigationController pushViewController:vc animated:YES]; 
Powiązane problemy