Comment annuler une transition par programme et rester dans la même vue
-
12-12-2019 - |
Question
Je veux savoir comment annuler une transition dans un programme lorsqu'une condition est fausse ?
Ci-dessous mon extrait de code :
if ([segue.identifier isEqualToString:@"Information Segue"])
{
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Login" inManagedObjectContext:self.managedObjectContext];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@" ANY userid==%@ AND password==%@",_loginTextfield.text, _passwordTextField.text];
[request setEntity:entity];
[request setPredicate:predicate];
NSError *anyError=Nil;
NSArray *fetchedObjects = [self.managedObjectContext executeFetchRequest:request error:&anyError];
if ([fetchedObjects count] )
{
useridentered = _loginTextfield.text;
passwordentered = _passwordTextField.text;
InformationTVC *informationTVC = segue.destinationViewController;
informationTVC.managedObjectContext = self.managedObjectContext;
}
else
{
/* want to put my cancel the segue and remain in the login view */
}
}
Si quelqu'un pouvait me guider, ce serait d'une grande aide.
La solution
La référence de la SEGUE: https://developer.apple.com/library/ios/documentation/uikit/reference/uistoryboardsegue_class/reference/reference.html N'a pas de méthode publique qui vous permettrait d'annuler la Segue.
Il me semble que cela serait plus facile de décider de faire la SEGUE ou non, sur la base des conditions, avant que la SEGUE ne se produise, mais c'est à vous de décider.
Autres conseils
Vérifiez ce fil: Segue conditionnelle effectuée sur Tap sur UitailViewCell
Fondamentalement au lieu de relier votre Segue directement sur un bouton, placez-le entre les contrôleurs d'affichage et relierez le bouton sur une ibaction qui appellera de manière conditionnelle le fonctionnement de la fonctionWithIdentifier
Il existe une autre option ici : https://stackoverflow.com/a/42161944/4791032
Vous pouvez simplement l'enregistrer func tableView(_ tableView: UITableView, willSelectRowAt indexPath: IndexPath)