如何理解这条SWIFT代码以弹出到root View Controller



我想编写一些代码以从当前视图控制器弹出回根视图控制器。令人困惑的是,我和各种语法都发现了许多答案。(我猜测目标C或不同版本的Swift ...)这是当前对我的AppDelegate中最简单的语法:

let navigationViewController = self.window?.rootViewController as! UINavigationController
[navigationViewController .popToRootViewController(animated: true)]

我通过查看以下答案而遥遥无期:https://stackoverflow.com/a/23027260/88887398他的语法略有不同,我想这是自2012年起的旧语法,所以我必须稍作更改,但是它正在使用上面的代码。

问题:我不太了解代码第二行中发生了什么。当然,我知道它会弹出回根视图控制器,但我根本不了解语法。最令人困惑的是,代码被我根本不理解的一对括号包围。接下来,poptoviewController以dot'。'开头,这与我链接的答案不同。我习惯使用'。要访问对象的属性,但这是单独使用的,而没有任何左侧的任何东西。

此代码似乎对我来说正常运行,但是我在互联网上发现的哪些语法以及弹出的root View Controller的方法,我不知道我在做什么是正确的还是如何它完全有效。我所知道的是"现在正在工作"。请帮助我了解此代码。

uinavigationcontroller类具有一个名为poptorootViewController的方法它采用名为Animation的Bool参数。如果您传递动画值,则动画将发生导航。

因此,在目标C

中调用该方法
UINavigationController *navigationController = (UINavigationController  *)self.window.rootViewController;
[navigationController popToRootViewControllerAnimated:YES];

上面是我们第一次获得了指向NavigationController的指针。使用的是,我们正在调用uinavigationcontroller类内的poptorootviewControllerRollerAnimimatimated方法,带有参数值是的(在objc ys yes是true,no no是false)

上面的同一件事可以以

的速度写入
let rootNavController = self.window?.rootViewController as! UINavigationController
rootNavController.popToRootViewController(animated: true)

类似于OBJC中的方案上面的书面语法在迅速。我们获得了navcontroller的实例,我们称为poptorootviewcontroller方法()

实际上,这只是一个数组...

您可以写:navigationViewController.popToRootViewController(animated: true)

那会做同样的事情。

如果您这样做:

let x = navigationViewController.popToRootViewController(animated: true)

x将包含一个可选的UIViewController的CC_3的可选阵列

如果您这样做:

let x = [navigationViewController.popToRootViewController(animated: true)]

x将包含一个带有[[UIViewController]?]类型的可选数组的数组CC_7

如果您这样做:

[navigationViewController.popToRootViewController(animated: true)]

数组的数组将永远不会使用...

,例如在Swift中简单地忽略了空间,例如您可以做:

myObject
    .myMethod()

它通常用于流利的语法...

编辑

objective-c呼叫此方法将是:

[navigationViewController popToRootViewControllerAnimated: YES];

相关内容

最新更新