如何在ios中检查是否发生了导航到下一个UIViewController?

时间:2014-06-19 07:05:13

标签: ios uiviewcontroller navigation

我使用了故事板并在控制器之间拖动了导航。例如,从UIViewController A到UIViewController B到UIViewController C。

我在UIViewController A上有一个按钮。我正在使用该按钮并将动作拖动到UIViewController B并将segue设置为推送类型。

然后在按钮上单击,我正在检查这样的条件:

    if( go == YES )
    {
      // navigate to B
    }
    else
    {
     // don't navigate to B
    }

如何编写代码以正确导航到B或停止导航到B? 我必须使用prepareForSegue吗?

2 个答案:

答案 0 :(得分:0)

直到这里,你已经正确完成了。现在尝试以下步骤:

  1. 通过从A拖动到B连接的segue,在Interface Builder中为它设置segueIdentifier。
  2. 在按钮单击方法中,如果要从A导航到B,请使用此语句。

      

    [self performSegueWithIdentifier:@" yourSegueIdentifier"发件人:无];

  3. 在此,您必须提供在“界面”构建器中设置的标识符名称。

    您的问题是您已直接连接按钮以将Segue推送到B控制器。要在条件为假时停止导航到B,请按照下列步骤操作:

    1. 从A到B删除当前的Segue。
    2. 现在将故事板中View的ViewController按钮中的segue连接到B Controller。请注意A ViewController下方的黄色按钮。看到底部图像的黄色按钮。通过从该按钮拖动到B ViewController来连接segue。
    3. enter image description here

      1. 现在用你给出的名字命名Segue,即loginSegue并尝试运行你的项目。现在如果条件不对,它就不会去B.
      2. 希望这有帮助。

答案 1 :(得分:0)

无需每次都使用prepareForSegue。 您也可以通过此代码推送视图控制器。

if( go == YES )
    {
      // navigate to B

        UIStoryboard *story = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
        viewController *viewObj = [story instantiateViewControllerWithIdentifier:@"viewController"];

        [self.navigationController pushViewController:viewObj animated:YES];
    }
    else
    {
     // don't navigate to B
    }

为此,您必须在故事板中将storyboardID作为“viewController”提供给viewcontroller