W zależności od wyniku XML, nie chcę, aby bieżący segue
działał na dotyk UIButton.ios segue "anuluj"
wiem, że mogę wybrać, które segue
Chcę wykonać, ale jak robię segue
nie wykonać? Lub przynajmniej nie wykonać żadnego z dostępnych ?
W zależności od wyniku XML, nie chcę, aby bieżący segue
działał na dotyk UIButton.ios segue "anuluj"
wiem, że mogę wybrać, które segue
Chcę wykonać, ale jak robię segue
nie wykonać? Lub przynajmniej nie wykonać żadnego z dostępnych ?
Jeśli twoim celem wdrożenia jest iOS 6.0 lub nowszy, można zastąpić the -[UIViewController shouldPerformSegueWithIdentifier:sender:]
method wrócić YES
jeśli chcesz wykonać segue i NO
jeśli nie.
Jeśli cel wdrożenia jest wcześniejszy niż iOS 6.0, wiadomość shouldPerformSegueWithIdentifier:sender:
nie zostanie odebrana. Więc w swoim scenorysie nie rysuj przejścia z przycisku. Zamiast tego narysuj przejście z kontrolki widoku przycisku i nadaj identyfikatorowi segue. Podłącz przycisk do urządzenia IBAction
w swoim sterowniku widoku. W akcji sprawdź, czy chcesz wykonać przejście. Jeśli chcesz go wykonać, wyślij sobie performSegueWithIdentifier:sender:
, przekazując identyfikator przypisany do segue w scenorysie.
Apple Developer Documentation ma właściwą metodę, aby anulować segue, który jest zarządzany w Storyboard:
- (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender
Na przykład:
- (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender {
if ([identifier isEqualToString:@"listPopover"]) {
if (self.listPopover == nil) {
// Allow the popover segue
return YES;
}
// Cancel the popover segue
return NO;
}
// Allow all other segues
return YES;
}
Komunikat' shouldPerformSegueWithIdentifier: sender: 'został dodany w systemie iOS 6 i nie będzie wysyłany na urządzeniach z wcześniejszą wersją iOS Po wysłaniu tego pytania system iOS 6 nie został wydany. –
Sprawdź ten wątek: https://stackoverflow.com/a/42161944/4791032
można po prostu sprawdź to w func tableView(_ tableView: UITableView, willSelectRowAt indexPath: IndexPath)
jest " [self performSegueWithIdentifier: @ "myIdentifier" sender: self]; 'correct? Xcode daje mi 'SIGABRT' :( – Jacksonkr
Musisz ustawić punkt przerwania wyjątku, aby zobaczyć, co się nie zgadza –