2012-05-31 15 views
6

Pracuję nad storyboardy, które ma kilka widoków na pierwszy rzut warunek jest umieszczony chcę, jeżeli spełnia warunek to tylko nawigacja powinno się zdarzyćjak zastosować warunek oparty niestandardowy segue w serii ujęć

dla tego Użyłem klienta przechodźcie, ale bez względu na to, czy mój stan spełni, czy nie, nawiguje do nowego widoku.

Stworzyłem metodę w klasie zwyczaj Segue

- (void) perform{ 

    NSLog(@"source %@",self.sourceViewController); 
    NSLog(@"dest %@",self.destinationViewController); 

    UIViewController *sVC=self.sourceViewController; 
    UIViewController *dVC=self.destinationViewController; 

    [sVC.navigationController pushViewController:dVC animated:YES]; 


} 

Chcę ustawić warunek, jeśli wynik jest 1 tylko wówczas powinien on poruszać. Woul prepareforsegue lub initwithsegue zapewni mi jakąkolwiek pomoc.

+0

Sformatuj swój kod. –

Odpowiedz

30

Czy chcesz powiedzieć, że chcesz przeprowadzić segue tylko wtedy, gdy warunek jest spełniony?

Jeśli tak, zamiast tworzyć segue bezpośrednio z komórki kontrolnej lub tabeli, utwórz bezindukcyjną segue. Bezczasowa zmiana ma kontroler widoku jako źródło i nigdy nie wystrzeli automatycznie. Zamiast tego możesz go uruchamiać programowo w dowolnym momencie, w tym z IBAction.

Aby utworzyć bezczasową zmianę, uruchom sterowanie + przeciągnij przejście z ikony kontrolera widoku zawierającego w scenie sceny na dole sceny. Przeciągnij do miejsca docelowego tak jak normalnie i wybierz typ segue. Wybierz segue, a w inspektorze wybierz identyfikator segue.

W czasie wykonywania, gdy chcesz wykonać przejście, wywołaj - [UIViewController performSegueWithIdentifier: sender:]. Możesz przekazać dowolny przedmiot, który chcesz nadawcy, w tym zero. Jeśli nadawca nie ma dla ciebie zastosowania, podaj zero.

Więc w skrócie:

  • Tworzenie segue Triggerless od kontrolera widoku do docelowego sceny
  • Ustaw identyfikator dla segue w Inspektorze
  • w czasie wykonywania, a kodu formularza, call - [UIViewController performSegueWithIdentifier: sender:], jeśli chcesz wywołać segue.
+0

Dziękuję za odpowiedź, ale czy mógłbyś powiedzieć mi, że ruch, który przeciągam od źródła do miejsca docelowego pokazuje mi push, modal, custom i wybieram custom i nadaję tej segue identyfikator, ale jak ustawiłem jego identyfikator, to na siłę wywołaj metodę klasy segue po kliknięciu przycisku w jaki sposób sprawdzi ona stan –

+0

cześć Jon, zastosowałem to, co powiedziałeś, a teraz to popycha dwa razy i utworzyłem pchnięcie i ustawię identyfikator kiedy kliknę przycisk, który napisałem [UIViewController performSegueWithIdentifier: sender:] method [self performSegueWithIdentifier: @ "JHCustomSegue" sender: nil]; możesz proszę, chk wat robię źle tutaj –

+3

Cześć w końcu znalazłem solutio Nadzieję, że to pomaga innym Możesz ręcznie wykonać segues. Kiedy tworzysz scenę w serii ujęć, zamiast Ctrl + Przeciąganie od przycisku do kontrolera widoku, przeciągnij z kontrolera widoku do innego kontrolera widoku. Nadaj nazwę segue, a następnie w swoim kodzie wywołaj [self performseguewithidentifier @ "seguename"] –

Powiązane problemy