如何在故事板中应用基于条件的自定义segue

Vik*_*jha 6 xcode conditional uistoryboard segue

我正在制作故事板,在第一个视图上有几个视图,如果条件满足则我想要的条件只有导航应该发生

为此,我使用了自定义segue,但无论我的条件是否满足,它都会导航到新视图.

我在自定义segue类中创建了方法

- (void) perform{

    NSLog(@"source %@",self.sourceViewController);
    NSLog(@"dest %@",self.destinationViewController);

    UIViewController *sVC=self.sourceViewController;
    UIViewController *dVC=self.destinationViewController;

    [sVC.navigationController pushViewController:dVC animated:YES];


}
Run Code Online (Sandbox Code Playgroud)

我想设置条件,如果结果为1,那么它只应导航.Woul prepareforsegue或initwithsegue为我提供任何帮助

Jon*_*ess 31

你是说你只想在条件成立的情况下执行segue吗?

如果是这样,则不是直接从控件或表格单元创建segue,而是创建无触发segue.无触发segue将视图控制器作为其源,并且它不会自动触发.相反,您可以随时以编程方式触发它,包括来自IBAction.

要创建无触发segue,请从场景底部的场景底座中的包含视图控制器图标开始控制+拖动segue.像往常一样拖动到目标场景,然后选择segue类型.选择segue,然后在检查器中选择segue标识符.

在运行时,当你想执行segue时,调用 - [UIViewController performSegueWithIdentifier:sender:].您可以为发件人传递任何您想要的对象,包括nil.如果发件人对您没用,请传递nil.

所以,总结一下:

  • 从视图控制器到目标场景创建无触发segue
  • 在检查器中设置segue的标识符
  • 在运行时和表单代码中,当你想要触发segue时,调用 - [UIViewController performSegueWithIdentifier:sender:].

  • 嗨,我终于找到了解决方案希望它可以帮助他人你可以手动执行segues.在故事板中创建segue时,不是按Ctrl +从按钮拖动到View Controller,而是从View Controller拖动到另一个View Controller.给segue一个名字,然后在你的代码中调用[self performseguewithidentifier @"seguename"] (3认同)