ios - Storyboard - 如何在没有动画和显示屏幕的情况下自动执行转场

标签 ios objective-c ios7 segue

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

我有两个 Storyboard共享相同的 Controller ,所以我对 segues 使用相同的名称(ipad 和 iphone 版本)。

所以当用户回到应用程序时,我读取了核心数据并知道他已经执行了初始步骤,所以我想“跳过”那些屏幕。

问题: 我只能在 View 可见后执行 segues,否则导航会搞砸。但是这样做时,用户会短暂地看到屏幕并看到动画将屏幕“推”开。我想在导航栏上保留导航历史记录,这就是为什么我想使用 segues 和所有与之相关的逻辑。

所有解决方案都指向以编程方式创建 View 并将它们放在堆栈上,但我想利用 Storyboard。

最佳答案

这是一种方法;

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

然后在你的第一个 Controller (你想跳过但又回来的那个)的 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];
      }
   }
}

这将有效地推送到第二个 viewController,同时仍将 viewController 保留在导航树中。

关于ios - Storyboard - 如何在没有动画和显示屏幕的情况下自动执行转场,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23524448/

相关文章:

ios - 在 swift 4 中添加 uiview 后按钮不起作用

ios - 如何使用 UIGestureRecognizer 识别字母

ios - 与 UITapGestureRecognizer 一起使用时,UISwipeGestureRecognizer 未注册滑动

ios - 如何从字符串中获取 NSDate

iphone - 如何调整 rightBarButtonItems 中两个 UIBarButtonItem 之间的间距

ios - 在 Cocos2D V3 中单击时展开的 Sprite 按钮

ios - 使用 AVAssetWriter 捕获音频和视频的损坏视频

iphone - UIToolbar 在屏幕顶部时不能正确旋转

ios - 识别屏幕锁定和解锁 ios 的滑动模式

iphone - 隐藏 ios 7 时搜索栏变白