我已经在我的应用程序中实现了UITabBar。在ViewController的一个UITabBar项中,我展示了另一个ViewController,它是以ViewController的方式呈现的。在此阶段,我希望在willdisappear.中禁用所有UITabBar项并重新启用。
在下面的委托中,如果我得到的是模型式的ViewController,那么在比较时,我可以返回而不需要任何操作。但是,我对如何获得可视化的ViewController感到困惑,因为它是以模块化的方式呈现的。这种方法会有效吗?
(BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController{
//HOW CAN I GET HERE VISIBLE VIEWCONTROLLER I.E. PRESENTED MODALLY VIEWCONTROLLER.
}发布于 2018-05-30 12:40:25
相反,在禁用选项卡栏时,可以将选项卡条隐藏在呈现视图控制器的viewWillAppear中,并在viewWillDisappear__中再次显示。
在viewWillAppear中
tabBarController?.tabBar.isHidden = true在viewWillDisappear中
tabBarController?.tabBar.isHidden = false但是,如果您的动机是获得可见视图控制器,您可以使用下面的UIApplication扩展。
extension UIApplication {
class func topViewController(base: UIViewController? = UIApplication.shared.keyWindow?.rootViewController) -> UIViewController? {
if let nav = base as? UINavigationController {
return topViewController(base: nav.visibleViewController)
}
if let tab = base as? UITabBarController {
if let selected = tab.selectedViewController {
return topViewController(base: selected)
}
}
if let presented = base?.presentedViewController {
return topViewController(base: presented)
}
return base
}
}https://stackoverflow.com/questions/50598773
复制相似问题