我有UITabBarController
。它有4 tabBarItem
。
1st tabBarItem
defaultViewController(1)
和我
去了另一个ViewController(2)
,后面显示了一些
第一个defaultViewController(1)
中的操作。 2nd tabBarItem
defaultViewcontroller(2)
。我再次切换回1st tabBarItem
,显示ViewController(2)
。
我想展示defaultViewController(1)
。如何使用swift 4
实现此目的。
defaultViewController(1)
和defaultViewController(2)
分别是第1和第2 ViewController
的默认TabBarItem
。***
答案 0 :(得分:1)
扩展UITabbarController
的子类并将其用作tabbar的类。在该工具中UITabBarControllerDelegate
,didSelect
并使用popToRootViewController
弹出到您的defaultViewController
。
func tabBarController(_ tabBarController: UITabBarController, didSelect viewController: UIViewController){
if viewController is UINavigationController {
//when you have `UINavigationController`
let rootNavigationController = viewController as! UINavigationController
rootNavigationController.popToRootViewController(animated: false)
} else {
//when you don't have `UINavigationController` then dismiss all viewcontroller that was presented.
let rootViewController = viewController
if rootViewController.presentingViewController != nil {
rootViewController.dismiss(animated: false, completion: nil)
}
}
}
注意:添加self.delegate = self
以符合viewDidLoad
方法中的协议。
答案 1 :(得分:1)
假设您在 UITabBarController 的每个标签页中都有 UINavigationController , defaultViewController(1)是第一个标签的rootViewController,在其中有一个导航到 ViewController(2)的按钮。
首先,让我们创建通用解决方案。像这样创建 UIApplication 扩展,
extension UIApplication {
class func topViewController(controller: UIViewController? = UIApplication.shared.keyWindow?.rootViewController) -> UIViewController? {
if let navigationController = controller as? UINavigationController {
return topViewController(controller: navigationController.visibleViewController)
}
return controller
}
}
在 AppDelegate 中实现 UITabBarControllerDelegate 并执行以下代码,
func tabBarController(_ tabBarController: UITabBarController, didSelect viewController: UIViewController) {
if tabBarController.selectedIndex == 0 {
UIApplication.topViewController()?.navigationController?.popToRootViewController(animated: false)
}
}
在上面的代码中,我已将 tabBarController.selectedIndex 设为0,您可以根据需要使其不同。
如有任何疑问,请与我联系。