我想编写一些代码以从当前视图控制器弹出回根视图控制器。令人困惑的是,我和各种语法都发现了许多答案。(我猜测目标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];