当触发segue时,它将启动目标viewcontroller。有没有办法我可以预先加载或缓存视图控制器并在触发segue时将其加载到代码中?提前谢谢。
答案 0 :(得分:3)
使用segue的一个好处是视图控制器是为您设置和实例化的。您可以简单地不使用segue,并自己将VC启动/推送到导航堆栈。这将允许您随时初始化它,将VC存储为ivar,然后在适当时将其推送。
答案 1 :(得分:2)
是。例如为了提高响应速度,我需要预先加载设备旋转时显示的照片。因此,在故事板中,我选择了横向VC并在Identity Inspector中设置了Storyboard ID。然后当加载肖像VC时,我通过调用:
创建了风景VCself.landscapeViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"landscapePhotosVC"];
// this next line is critical so photos can be added to the UIScrollView.
// Else the UIScrollView on landscape VC will be nil
[self.landscapeViewController view];
self.landscapeViewController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
self.landscapeViewController.modalPresentationStyle = UIModalPresentationFullScreen;
然后当viewDidAppear触发纵向VC时,我将照片添加到横向VC上的UIScrollView。
当设备旋转到横向时,我会显示风景VC:
[self.navigationController presentViewController:self.landscapeViewController
animated:YES
completion:nil];
答案 2 :(得分:1)
你可以在不使用segue的情况下实例化视图控制器,首先在storyboard编辑器中为UIViewController设置storyboardID,然后使用
访问它MyViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"MyVC"];