Chr*_*ris 6 iphone tabbar uitabbarcontroller uitabbaritem
刚刚发现了一些东西:如果你有一个Tabbar与一个NavigationController(它有一些堆栈的视图)相结合,你双击TabBarItem,视图弹出到第一个ViewController,无论你喜欢与否.
有办法防止这种情况吗?
您可能不应该阻止此行为.这是一个标准的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)
到目前为止我发现的唯一方法是创建 UINavigationController 的子类并覆盖 popToRootViewControllerAnimated 方法以返回 nil。
这似乎是 UITabBar 在按 Tab 键两次时调用的方法。我不知道这是否是正确的方法...希望得到有关该问题的一些反馈...
- (NSArray *)popToRootViewControllerAnimated:(BOOL)animated {
return nil;
}
Run Code Online (Sandbox Code Playgroud)