我已将 UITabBar 实施到我的应用中。在一个UITabBar项目的ViewController中,我展示了另一个以模态方式呈现的ViewController。在此阶段,我想要禁用所有UITabBar项目并在 willdisappear 中重新启用。
在下面的委托中,如果我以模态方式获得 ViewController然后,比较我可以返回没有任何动作。但 我对如何获得可见的ViewController感到困惑 模态。 这种方法会起作用吗?
(BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController{
//HOW CAN I GET HERE VISIBLE VIEWCONTROLLER I.E. PRESENTED MODALLY VIEWCONTROLLER.
}
答案 0 :(得分:1)
禁用:
self.tabBarController.tabBar.userInteractionEnabled = NO;
启用
self.tabBarController.tabBar.userInteractionEnabled = YES;
答案 1 :(得分:0)
而不是禁用标签栏,您可以隐藏所呈现视图控制器的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
}
}