使用情节提要时重用UIViewController实例

我决定在我目前的iPhone应用程序中使用故事板。 我面临一些问题。 我真的需要重用我的UIViewController实例。

这是什么意思? 那么,例如,我有一个表视图控制器。 当我点击一个单元格时,另一个视图控制器将从故事板加载并推送到导航控制器堆栈中。 这一切都很好,但是每次加载这个视图控制器需要大约半秒到一秒的时间。 在我使用故事板之前,我只是通过caching创build的实例来解决这个问题,所以第二次点击一个单元时,视图控制器可以立即显示出来。

通过caching创build的实例,我的意思是这样的:

if (!cachedInstance) { cachedInstance = [MyViewController new]; } [self.navigationController pushViewController:cachedInstance]; 

有谁知道如何使用故事板完成这个? 提前致谢。

如果你使用segues,你将需要创build自定义的segues,以便像以前一样使用caching视图控制器。 否则,典型的“push”segue会为segue.destinationViewController创build一个新的视图控制器实例。 如果你写一个自定义的UIStoryboardSegue类并使用custom segue你可以覆盖initWithIdentifier:source:destination:并把你的caching视图控制器放到destinationViewController ,然后覆盖perform ,使用经典的pushViewController调用。

如果你真的打算使用它,那就是你如何处理这个问题。 我只想跳过它,除非你真的希望花哨的箭头把所有东西放在你的故事板上。 如果你跳过它,你可以将视图控制器实例化到caching中,然后像以前一样推动它们。

如果你的问题更多的是关于一个视图控制器里面的故事板,那么你可以使用:

 UIViewController *vc = [[UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil] instantiateViewControllerWithIdentifier:@"Some View Controller"]; 

然后你可以把它保存到你的caching中,并像你在代码中那样推送它。

希望有所帮助。