为啥我们将 UIViewController 传递给 UINavigationController 类?

Posted

技术标签:

【中文标题】为啥我们将 UIViewController 传递给 UINavigationController 类?【英文标题】:Why do we pass a UIViewController to a UINavigationController Class?为什么我们将 UIViewController 传递给 UINavigationController 类? 【发布时间】:2012-08-05 15:33:37 【问题描述】:

我对另一个控制器业务中的这个控制器有点困惑。我认为我们可以在没有 initWIthRootViewController 的情况下初始化 UInavigationController。

ViewController *controller = [[ViewController alloc] init];
controller.title = @"ViewController";
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:controller]; 

有时我想我明白了,但是当我看到这样的事情时,它让我回到了虚无。我已阅读文档,但它(对我而言)做得不好。

谢谢

【问题讨论】:

问题/问题是什么? 【参考方案1】:

您的导航控制器正在管理其堆栈中项目的显示。 rootViewController 是它要显示的第一项,也是堆栈中的第一项。它与堆栈中的其他 VC 有点不同,因为 AFAIK,它不能被弹出。有时根视图控制器会保存对堆栈中其他 VC 有用的信息。

我猜 Apple 可以让您在设置期间推送视图控制器,但他们认为根视图控制器的概念是一个很好的概念,我可以看到它如何帮助 IB/Storyboard 实现。

【讨论】:

如果我有一个在点击按钮之前不使用导航控制器的主视图,该主视图是否也有一个根控制器?

以上是关于为啥我们将 UIViewController 传递给 UINavigationController 类?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我不能在 Swift 中使用从一个 UIViewController 传递到另一个(在控制台中打印数据)的数据设置标签?

将 UITextFieldDelegate 传递给 UIViewController 帮助器类

将数据从 UIViewController 传递到 UIView

将数据从 UITableView 传递到 UIViewController

将数据从 UIViewControllerRepresentable 传递给 UIViewController

将 NSManagedObject 传递给 UIViewController