ios - navController.topViewController 还是 navController.viewControllers.first?

标签 ios swift uinavigationcontroller segue

我正在尝试从 VC 转换为嵌入在导航 Controller 中的 VC。

就我的目的而言,这两行代码似乎完成了同一件事,但我想知道它们之间的真正区别是什么以及一个是否对另一个有利。

为此...

if let navController = segue.destination as? UINavigationController {

这是:

    let viewController = navController.viewControllers.first as? myViewController

或者这个:

    let viewController = navController.topViewController as? myViewController

更好?

最佳答案

这取决于你的意思。

  • 第一个 View Controller 是导航 Controller 的第一个 subview Controller 。

  • topViewController 是导航 Controller 的最后一个 subview Controller 。

所以它们是相反的。 碰巧在这种情况下它们是同一个 View Controller ,因为导航 Controller 只有一个 subview Controller 。但如果我是你,我不会养成这样的习惯,即想象这两行说的是同一件事。他们没有。

(就个人而言,我不会说这两件事。我说 navController.viewControllers[0]。我说 as!,因为我该死的最好是关于那个 View Controller 的类是正确的,否则我想崩溃。)

关于ios - navController.topViewController 还是 navController.viewControllers.first?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47614931/

相关文章:

ios - 在表格 View 单元格中显示列数据 - 为什么我的表格单元格没有被创建和填充?

ios - SceneKit – 在 3D 对象上绘图

ios - Swift 协议(protocol)和扩展,我需要根据需要调用覆盖方法或默认扩展方法

ios - 下一次触摸前未能收到系统手势状态通知

ios - 使用 Codable 和 CodableFirebase 快速解析 Firebase 值时获取 nil

iOS Swift EXC_BAD_ACCESS 代码2 SearchTextField(UITextField 子类)

ios - setNavigationBarHidden 使整个 View 向上/向下滑动

ios - 导航使应用程序崩溃

iphone - 从 self.navigationItem(在 UINavigationController 内部)打开时,UIPopoverController 未解除

ios - 更新基于 UITableView 高度的 UIScrollView 的 contentSize