2012-02-05 15 views
6

Mam pojedynczy widok w moim storyboard, który dodaję do mojego bieżącego widoku, wykonując następujące czynności:Zawieszanie przy uruchamianiu ViewController z ujęć

MainViewController *mvc = [self.storyboard instantiateViewControllerWithIdentifier:@"MainController"]; 
      [self.view addSubview:mvc.view]; 

storyboard

Widok pojawia się, ale wszystko zrobić po pojawieniu się, prowadzi do awarii. Co ja robię źle ?

Oto przykład kiedy się zawiesi:

-(IBAction)showUsername:(id)sender{ 

    [testLabel setText:@"username"]; 

} 

Wszystko jest podłączone w serii ujęć, tak więc połączenia fałszywie związane nie powinny powodować problem.

+0

należy pokazać swój dziennik katastrofy tutaj ... – Seamus

+0

nie jest niczym więcej niż niebieskim „(gdb)” ... –

Odpowiedz

8

możliwość wystąpienia nowego kontrolera wyświetlania:

MainViewController *mvc = [self.storyboard instantiateViewControllerWithIdentifier:@"MainController"]; 

Ale nie zachowują je. Twoja hierarchia widoków jest taka, jak tylko dodałeś ją do innego widoku.

[self.view addSubview:mvc.view]; 

Więc gdy przycisk zostanie kliknięty, wiadomość zostanie wysłana do Ciebie IBAction, ale kontroler widok został już wydany. Aby temu zapobiec, zachowaj zmienną mvc, na przykład gdzieś w obiekcie.

@property(nonatomic, strong) MainViewController *controller; 

self.controller = mvc; 
+0

Tak, dziękuję, znowu zadałem to pytanie i otrzymałem tę samą odpowiedź ... Problem został już rozwiązany, ale i tak dziękuję. Jestem pewien, że to też pomoże innym. –

+0

Kocham cię <3 konsola debugowania nawet nie daje wskazówki, aby to znaleźć! –

0

enter image description here

mogę myśleć cały powód zanim pokazać dziennik ...

+0

myślę, że zostanie zwolniony lub nie to nie jest właściwie instancja ... Ale nie wiem, jak to rozwiązać. Przydzieliłem go do mojej klasy kontrolera, powinno działać dobrze. –

+0

@ user1066899 można nacisnąć ctrl i przeciągnąć swój viewcontroller z ib do pliku .h. to wszystko jest w porządku. – Seamus

+0

nie, niestety nie mogę ... Co by to zrobiło? –

0

Turn NSZombie na w Produkcie >> Edit Schemat powinien uzyskać bardziej opisowe Błąd pokazując wtedy. Następnie możesz go dodać.

+0

Tak, dziękuję, że działa dobrze. Teraz w końcu dostaję błąd, i jak zakładałem, mój ViewController dostaje deallocated '- [MainViewController performSelector: withObject: withObject:]: wiadomość wysłana do deallocated instancji 0x3fa5a60' –

+0

Ale nie wiem jak to rozwiązać ... czy możesz Pomóż mi ? –

0

Upewnij się, że twoja metoda została zadeklarowana i zaimplementowana poprawnie. Upewnij się także, że masz IBOutlet UILabel * testLabel w swoim .h. Jedyny inny problem, jaki mogę wymyślić, to to, jak go podłączyłeś. Czy powoduje to awarię tylko po naciśnięciu przycisku?

0

Ta linia jest błędna, dlatego właśnie otrzymujesz błąd.

MainViewController *mvc = [self.storyboard instantiateViewControllerWithIdentifier:@"MainController"]; 
     [self.view addSubview:mvc.view]; 

zastąpić go tym

MainViewController *mvc = [self.storyboard instantiateViewControllerWithIdentifier:@"MainController"]; 
[self presentModalViewController:mvc animated:YES]; 

W storyboardów nie dodajesz podrzędny robisz jedną z trzech rzeczy prezentujących modalne, spychając go na stosie kontroler nawigacji lub dokonania jednego niestandardowego tych.

+0

Addubview jest zarezerwowany dla gdy viewcontrolle został przedstawiony. – Popeye

Powiązane problemy