如何以编程方式取消segue并保持在同一视图中

时间:2012-03-12 02:51:09

标签: iphone ios uistoryboardsegue

我想知道当某些条件为假时我们如何取消程序中的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 */ 
    }
}

如果有人能指导我,那将是一个很大的帮助。

3 个答案:

答案 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)

中查看