Mam dwie segue, które prowadzą do tego samego viewController
. Dostępne są 2 przyciski, które są połączone z tym samym viewController
za pomocą 2 segues. W tym viewController
muszę sprawdzić, który przycisk został kliknięty. Tak więc muszę sprawdzić, który fragment został użyty/wstępnie uformowany. Jak mogę to sprawdzić w klasie viewControllers? Wiem, że istnieje metoda prepareForSegue
, ale nie mogę tego użyć do mojego celu, ponieważ muszę umieścić prepareForSegue
w klasie, w której znajdują się 2 przyciski, i nie chcę jej tam, ale chcę ją w klasie viewControllers
, ponieważ muszą uzyskać dostęp i ustawić niektóre zmienne w tej klasie.Jak sprawdzić, który segment został użyty?
8
A
Odpowiedz
8
trzeba ustawić zmienną drugi viewcontroller w metodzie prepareforsegue pierwszej. Oto, jak to się robi:
Następnie możesz sprawdzić tę właściwość w drugim vc, aby zrozumieć, skąd się tam wziąłeś. Jeśli masz 2 segues w storybooku dla 2 przycisków, wystarczy tylko identyfikator segue, aby ustawić odpowiednią wartość właściwości. Następnie kod zamienia się w ten sposób:
- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if([segue.identifier isEqualToString:segueIdentifier1])
{
SecondViewController *secondVC = (SecondViewController *)segue.destinationViewController;
secondVC.identifyingProperty = ...
}
else if([segue.identifier isEqualToString:segueIdentifier2])
{
SecondViewController *secondVC = (SecondViewController *)segue.destinationViewController;
secondVC.identifyingProperty = ...
}
}
2
Najpierw należy ustawić identyfikator segues bezpośrednio w skrzynkach lub za pomocą kodu przy użyciu metody performSegueWithIdentifier
. Niezależnie sposób, w jaki wybrałem, kontroler widok zadziała następujący sposób, więc trzeba przesłonić to wiedzieć, które segue
została wysyłania wiadomości, robisz tak:
-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"ButtonSegueIdentifierOne"]) {
// button 1
}
if ([segue.identifier isEqualToString:@"ButtonSegueIdentifierTwo"]) {
// button 2
}
}
Powiązane problemy
- 1. Jak sprawdzić, który kompilator został użyty do zbudowania Pythona
- 2. Który zestaw parametrów został użyty?
- 3. Jak ustalić, który kompilator został użyty do kompilacji pliku wykonywalnego?
- 4. Jak sprawdzić, który cel został wybrany w zamierzeniu.ACTION_SEND?
- 5. Java - Jak sprawdzić, który typ wyjątku został zgłoszony?
- 6. Maven mylić o JRE został użyty
- 7. Jquery i Jslint - '$' został użyty zanim został zdefiniowany
- 8. OAuthException: Ten kod autoryzacji został użyty - Facebook
- 9. Jak mogę się dowiedzieć, który magazyn kluczy został użyty do podpisania aplikacji?
- 10. Jak korzystać z dwóch przycisków przesyłania i rozróżniać, który z nich został użyty do przesłania formularza?
- 11. Jak korzystać z php, który został zainstalowany?
- 12. Czy mogę zniszczyć obiekt mutexattr zanim użyty zostanie mutex, który został zainicjowany przy użyciu tego mutexattr?
- 13. Jak sprawdzić, czy komputer został ponownie uruchomiony?
- 14. Jak znaleźć, który plik .emacs został załadowany?
- 15. C#: Jak obudzić system, który został zamknięty?
- 16. Jak uzyskać, który fragment został wybrany?
- 17. Jak sprawdzić, czy wpis session_start został wprowadzony?
- 18. akka: jak sprawdzić, czy aktor został zatrzymany
- 19. Jak sprawdzić, czy plik został zmodyfikowany?
- 20. Jak sprawdzić, czy klawisz Insert został przytrzymany?
- 21. Jak sprawdzić, czy wyjątek nie został odrzucony?
- 22. Jak mogę sprawdzić, czy CGPoint został zainicjowany?
- 23. Jaki minifier został użyty do wygenerowania oficjalnej wersji "minified" JQuery?
- 24. Facebook PHP/JS Sdk Ten kod autoryzacji został użyty błąd
- 25. Jak dodać segment do UIGestureRecognizer
- 26. jak ponownie złożyć segment tcp?
- 27. Jak sprawdzić, który znacznik został kliknięty w Google Maps v2 na Androida?
- 28. Bieżący segment URI w CodeIgniter
- 29. Rozwiń segment dla UINavigationController
- 30. Jak sprawdzić, który port używa procesu?
Zrobiłem to, ale kiedy kładę to: PageScrollViewController * kontroler = (PageScrollViewController *) segue.destinationViewController; controller.startStory = YES; aplikacja się zawiesza – nonuma
*** Zamykanie aplikacji z powodu nieprzechwyconego wyjątku "NSInvalidArgumentException", powód: '- [UIViewController setStartStory:]: nierozpoznany selektor wysłany do instancji 0x9976420' *** Stos wywoławczy pierwszego rzutu: – nonuma
Dziwne jest to, że błąd mówi coś o "setStartStory", ale nigdy tego nie używałem? Używam programu startStory – nonuma