【发布时间】:2024-01-19 01:04:01
【问题描述】:
我正在将我的应用程序移至 Storyboards,到目前为止,一切都很好。
但是,我发现了一些我不太了解并让我担心的事情。如果有人能对此提供一些见解,我将不胜感激。
我的应用使用普通的导航控制器。为了“向前”移动到新的视图控制器,我使用了自定义 segue;那里没有问题。但是,在应用程序中有一点我想回到导航堆栈的开头。我还使用自定义 segue 配置了“导航”,为此,我通过将最后一个视图控制器拖到第一个视图控制器(这对我来说已经很奇怪)在 Interface Builder 中创建了 segue,并且我已经实现了自定义 segue执行方法如下:
-(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 正在实例化一个我不会使用的视图控制器?
提前非常感谢!
【问题讨论】:
标签: ios ios5 uinavigationcontroller segue uistoryboardsegue