我想使用:
self.tabBarController?.selectedViewController?.navigationController?.pushViewController(vc, animated: false)
,但这在Swift中不起作用。但是如果我使用:
[self.tabBarController.selectedViewController pushViewController:nextVC animated:NO]
在Objective-C中。为什么?
尝试此
tabBarController?.selectedView?.pushViewController(nextVC, animated: false)
在您的目标c示例中,tabBarController.selectedViewController
被认为是UINavigationController
实例,可以根据您的ViewController层次结构正确正确。
但是,您的Swift示例假设tabBarController.selectedViewController
嵌入在与目标C版本不匹配的UINavigationController
实例中。访问NavigationController将返回NIL,因为您正在向导航控制器询问其父型导航controller(不存在(。
您的迅速示例可以像
一样修复guard let navigationController = tabBarController.selectedViewController as? UINavigationController else {
return
}
navigationController.pushViewController(vc, animated: false)