来自appiftlegate的popToRootViewController在swift中
我试图从应用程序委托弹出到导航堆栈的根视图控制器,并有一些问题将obj-c中的工作转换为swift。
什么在obj-c中有效:
UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController; [navigationController popToRootViewControllerAnimated:YES];
我转换的尝试:
var navigationController: UINavigationController = self.window?.rootViewController; navigationController.popToRootViewControllerAnimated(true);
我得到一个错误说UIViewController? 不能转换为UINavigationController’
我怎样才能解决这个问题?
这里有一些事情在起作用:
1)rootViewController将作为可选项返回,因为window和rootViewController属性都是可选的。 因此,我们需要打开它以确保这些值实际存在
2)rootViewController被定义为UIViewController – 而不是UINavigationController子类。 我们需要将它转换为UINavigationController,以便能够作为一个对它进行操作。
尝试安全地将根视图控制器展开为UINavigationController:
if let navigationController = self.window?.rootViewController as? UINavigationController { navigationController.popToRootViewController(animated: true) }
swift 3使用这个:
_ = navigationController?.popToRootViewController(animated: true)