选中选项卡时弹出到根视图

Joh*_*n S 18 iphone uitabbarcontroller uinavigationcontroller ios

对于我认为可能很容易的事情,我遇到了一些麻烦.我在根视图控制器中有一个表,当选择一行时,我按下一个新视图,然后从那里转到另一个选项卡.

我的问题是如何确保一旦用户点击第一个选项卡,导航控制器将弹出到root?

ios*_*per 27

在tabbar上选中每个选项卡时,将调用以下委托.

-(void) tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
Run Code Online (Sandbox Code Playgroud)

将以下代码放在此委托方法中.

if ([viewController isKindOfClass:[UINavigationController class]]) 
    {
        [(UINavigationController *)viewController popToRootViewControllerAnimated:NO];
    }
Run Code Online (Sandbox Code Playgroud)

它在我的应用程序上正常工作.


Evd*_*afa 11

对于斯威夫特爱好者:

import UIKit

class YourTabBarControllerHere: UITabBarController,
UITabBarControllerDelegate {

    override func viewDidLoad() {
        super.viewDidLoad()
        self.delegate = self;
    }

    func tabBarController(tabBarController: UITabBarController,
        didSelectViewController viewController: UIViewController) {
            if let vc = viewController as? UINavigationController {
                vc.popViewControllerAnimated(animated: false);
            }
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑: Swift 3更新,感谢@Justin Oroz指出这一点.


Lef*_*ris 2

[self.navigationController popToRootViewControllerAnimated:NO];
Run Code Online (Sandbox Code Playgroud)