iPhone UITabbar项目双击弹出控制器

Chr*_*ris 6 iphone tabbar uitabbarcontroller uitabbaritem

刚刚发现了一些东西:如果你有一个Tabbar与一个NavigationController(它有一些堆栈的视图)相结合,你双击TabBarItem,视图弹出到第一个ViewController,无论你喜欢与否.

有办法防止这种情况吗?

lem*_*nar 5

您可能不应该阻止此行为.这是一个标准的iPhone UI惯例,比如点击状态栏滚动到滚动视图的顶部.

如果你真的想这样做,你应该实现UITabBarController委托方法-tabBarController:shouldSelectViewController:,就像mckeed提到的那样.但是,如果您有五个以上的选项卡,则selectedViewController可能是"更多"部分中的视图控制器,但vc它将是[UITabBarController moreNavigationController].这是一个处理这种情况的实现:

- (BOOL)tabBarController:(UITabBarController *)tbc shouldSelectViewController:(UIViewController *)vc {
    UIViewController *selected = [tbc selectedViewController];
    if ([selected isEqual:vc]) {
        return NO;
    }

    if ([vc isEqual:[tbc moreNavigationController]] &&
        [[tbc viewControllers] indexOfObject:selected] > 3) {
        return NO;
    }

    return YES;
}
Run Code Online (Sandbox Code Playgroud)


Jak*_*sen 0

到目前为止我发现的唯一方法是创建 UINavigationController 的子类并覆盖 popToRootViewControllerAnimated 方法以返回 nil。

这似乎是 UITabBar 在按 Tab 键两次时调用的方法。我不知道这是否是正确的方法...希望得到有关该问题的一些反馈...

- (NSArray *)popToRootViewControllerAnimated:(BOOL)animated {
    return nil;
}
Run Code Online (Sandbox Code Playgroud)