navController.topViewController或navController.viewControllers.first?
我正在尝试从一个VC到一个嵌入在导航控制器中的segue。navController.topViewController或navController.viewControllers.first?
为了我的目的,这两行代码似乎完成了同样的事情,但想知道它们之间的真正区别是什么以及它是否对另一个有利。
这个...
if let navController = segue.destination as? UINavigationController {
是这样的:
let viewController = navController.viewControllers.first as? myViewController
或本:
let viewController = navController.topViewController as? myViewController
更好?
回答:
这取决于你的意思。
的
first
视图控制器是导航控制器的第一子视图控制器。topViewController
是最后导航控制器的子视图控制器。
所以它们是相反的。它发生,在这种情况下,他们是相同的视图控制器,因为导航控制器只有一个子视图控制器。但是,如果我是你,我不会养成这样的习惯,即想象这两条线会说同样的话。他们不。
(就个人而言,我不说任何的那些东西。我说navController.viewControllers[0]
。我说as!
,因为我已经织补以及更好的是对有关类视图控制器或我要崩溃了。)
回答:
正如评论中提到的亚光,“.first”和“topViewControllers”是相反的。
“.first”是viewControllers数组中的第一个VC(索引0),“.topViewController”是最后一个(索引n-1)。
如果你在导航控制器内只有一个VC,它们将是相同的,但是如果你有多个VC,它们将意味着不同的VC。
更好的选择将取决于你想继续使用哪个VC。不过,我认为最常见的是“.topViewController”,因为它会延续到最近加载的VC或第一个,如果没有加载。
以上是 navController.topViewController或navController.viewControllers.first? 的全部内容, 来源链接: utcz.com/qa/259355.html