我正在将我的应用程序移至 Storyboards,到目前为止,一切都很好。
但是,我发现了一些我不太了解并让我担心的事情。如果有人可以对此提供一些见解,我将不胜感激。
我的应用程序使用普通的导航控制器。为了“向前”移动到新的视图控制器,我使用了自定义 segue;那里没有问题。但是,在应用程序中有一点我想回到导航堆栈的开头。我还使用自定义转场配置了“导航”,为此,我通过将最后一个视图控制器拖到第一个视图控制器(这对我来说已经很奇怪)在 Interface Builder 中创建了转场,并且我已经实现了自定义转场按以下方式执行方法:
-(void)perform
{
UIViewController *src = (UIViewController *)self.sourceViewController;
UIViewController *dest = (UIViewController *)self.destinationViewController;
[src.navigationController popToRootViewControllerAnimated:NO];
// Custom animation code here
}
...效果很好。但是,我不明白它为什么起作用。在我看来,自定义 segue 应该实例化我的第一个视图控制器的新实例并将其分配为“dest”,但看起来 segue 足够聪明,可以意识到我想导航到以前的、现有的实例视图控制器,而不是创建一个新实例,它分配给“dest”现有的一个。
有谁知道以这种方式使用segues是否可以?它是否有可能偶然起作用但将来可能会停止工作?反正我是在浪费内存,因为 segue 正在实例化我不会使用的视图控制器?
提前非常感谢!