Cómo cancelar un SELDE programáticamente y permanecer en la misma vista
-
12-12-2019 - |
Pregunta
Quiero saber cómo cancelamos un Segundo en el programa cuando alguna condición es falsa?
a continuación es mi fragmento de código:
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 alguien podría guiarme, sería una gran ayuda.
Solución
La referencia para el segue: https://developer.apple.com/library/ios/documentation/uikit/reference/uistoryboardsegue_class/reference/reference.html No tiene un método público que le permita cancelar el Segue.
Me parece que sería más fácil decidir hacer el Segue o no, según las condiciones, antes de que el SEGUE comience a suceder, pero eso depende de usted.
Otros consejos
Echa un vistazo a este hilo: Segue condicional realizado en TAP en UITYVIEWCELL
Básicamente, en lugar de vincular su SEGUE directamente a un botón, póngalo entre los controladores de vista y vincule el botón a una iBACTY, que llamará condicionalmente la función PresentSueGueDidentifier
Hay otra opción aquí: https://stackoverflow.com/a/42161944/4791032
Solo puede comprobarlo en func tableView(_ tableView: UITableView, willSelectRowAt indexPath: IndexPath)