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ć.
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' –
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
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]; } } –