故事板 - 如何在没有动画的情况下自动执行segue并显示屏幕

Mar*_*rco 3 objective-c ios segue ios7

我有一个应用程序,用户必须在初始屏幕上输入一些信息,例如登录凭据.所有导航都使用故事板和segues完成,这会自动将导航栏设置在顶部.

我有两个共享相同控制器的故事板,所以我使用相同的名称segues(ipad和iphone版本).

因此,当用户返回应用程序时,我会读取核心数据并知道他已经执行了初始步骤,因此我想"跳过"这些屏幕.

问题:我只能在视图可见后执行segue,否则导航会被搞砸.但是当这样做时,用户会短暂地看到屏幕,并看到动画"推动"该屏幕.我想在导航栏上保留导航历史记录,这就是我想要使用segue和与之关联的所有逻辑的原因.

所有的解决方案都指向以编程方式创建视图并将它们放在堆栈中,但我想利用故事板.

MDB*_*983 5

这是一种做法;

在StoryBoard中,为第二个视图控制器分配一个标识符(这在身份检查器上完成,设置Storyboard ID字段).在下面的代码中,我将我的名字命名为secondVC;

然后在viewDidLoad中为你的第一个控制器(你要跳过但又回来)执行类似这样的操作;

- (void)viewDidLoad{
   [super viewDidLoad];
   /// validate  viewController one being displayed
   if(dontDisplayFirstController){

      UIStoryboard *storyBoard = self.storyboard;
      UIViewController *targetViewController = [storyBoard instantiateViewControllerWithIdentifier:@"secondVC"];
      UINavigationController *navController = self.navigationController;


      if (navController) {
        [navController pushViewController:targetViewController animated:NO];
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

这将有效地推送到第二个viewController,同时仍然在导航树中维护一个viewController.