2012-08-25 10 views

Odpowiedz

13

Wykonaj segue bezpośrednio z jednego kontrolera widoku do drugiego zamiast łączenia go z przyciskiem. Nadaj mu wymowną nazwę.

Następnie, w metodzie akcji przycisku, wykonaj co trzeba najpierw, a następnie przeprowadź test przy użyciu metody kontrolera widoku performSegueWithIdentifier:, używając nazwy, która została wcześniej wybrana.

Wygląda na to, że próbujesz ustawić właściwości kontrolera widoku, który ma pojawić się na twoim segue. W takim przypadku należy zaimplementować prepareForSegue: i użyć segue.destinationViewController, aby uzyskać wskaźnik do kontrolera widoku, który ma się pojawić.

+0

Dzięki za pomoc. Próbowałem robić to, co powiedziałeś, ale mimo to widok jest najpierw popychany, a akcja wykonywana po. Poniżej kodowanie używam - 'code' - (IBAction) searchButtonPressed (ID) nadawca { ViewController * viewController = [[ViewController Alloc] initWithNibName: @ "ViewController": zerowe wiązki]; viewController.query = [NSString stringWithFormat: @ "% @", search.text]; [self performSegueWithIdentifier: @ "szukaj" nadawcy: własny]; [viewController release]; } 'kod' –

+0

Cóż, to nie zadziała! Kiedy odbywa się segue, system operacyjny tworzy dla ciebie nowy kontroler widoku, więc ten, który zrobiłeś w swoim kodzie nic nie robi. Wydaje mi się, że powinieneś ustawić te właściwości w 'prepareForSegue:'. – jrturton

+0

Zaimplementowałem oba rozwiązania, które powiedziałeś. Wygląda na to, że wszystko jest w porządku, ale teraz aplikacja się zawiesza. Próbowałem dodać to - - (IBAction) searchButtonPressed: (identyfikator) nadawca { [self performSegueWithIdentifier: @ "szukaj" nadawca: nadawca]; } - (void) prepareForSegue (UIStoryboardSegue *) Segue nadawcy (ID) nadawca { if ([segue.identifier isEqualToString: @ "wyszukiwania"]) { ViewController * viewController = [Segue destinationViewController]; viewController.query = [NSString stringWithFormat: @ "% @", search.text]; [viewController release]; } } –