6

我正在处理情节提要,它在第一次查看时有几个视图放置了我想要的条件,如果条件满足,那么只有导航应该发生

为此,我使用了自定义 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];


}

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

4

1 回答 1

31

你是说你只想在条件为真时执行转场?

如果是这样,请不要直接从控件或表格单元格创建转场,而是创建无触发器转场。无触发器的 segue 以视图控制器为源,它永远不会自动触发。相反,您可以随时以编程方式触发它,包括从 IBAction 触发。

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

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

所以,总结一下:

  • 创建从视图控制器到目标场景的无触发转场
  • 在检查器中为 segue 设置标识符
  • 在运行时和表单代码中,当您想要触发 segue 时,调用 -[UIViewController performSegueWithIdentifier:sender:]。
于 2012-05-31T05:00:08.107 回答