我想知道当某些条件为假时我们如何取消程序中的segue?
以下是我的代码段:
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 */
}
}
如果有人能指导我,那将是一个很大的帮助。
答案 0 :(得分:2)
查看此主题: Conditional segue performed on tap on UITableViewCell
基本上不是将segue直接链接到按钮,而是将它放在视图控制器之间,并将按钮链接到IBAction,这将有条件地调用函数performSegueWithIdentifier
答案 1 :(得分:0)
segue的参考:https://developer.apple.com/library/ios/DOCUMENTATION/UIKit/Reference/UIStoryboardSegue_Class/Reference/Reference.html 没有允许您取消segue的公开方法。
在我看来,在segue开始发生之前根据条件更容易决定是否做segue,但这取决于你。
答案 2 :(得分:0)
此处还有另一个选项:https://stackoverflow.com/a/42161944/4791032
您可以在func tableView(_ tableView: UITableView, willSelectRowAt indexPath: IndexPath)