看起来很多新的iOS开发人员都遇到了这个客观c类的问题。 我试图检测5个标签项中的哪一个(家庭,产品,我的购物车,搜索,更多)。 根据索引(0,2,4),我想显示根视图,如果有任何其他视图堆叠在它上面。 这是AppDelegate.h的代码:
@interface AppDelegate : UIResponder <UIApplicationDelegate, UITabBarControllerDelegate> {
UITabBarController *tabBarController;
}
@property (strong, nonatomic) UIWindow *window;
@property (strong, nonatomic) UITabBarController *tabBarController;
@end
AppDelegate.h代码:
@synthesize tabBarController;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.tabBarController.delegate = self;
return YES;
}
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController{
NSLog(@"action called.");
}
答案 0 :(得分:0)
您可以通过在标签栏控制器的委托方法中调用所选视图控制器的-popToRootViewControllerAnimated:
方法来完成此操作:
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
NSUInteger vcIndex = [[tabBarController viewControllers] indexOfObject:viewController];
BOOL shouldPop = (vcIndex == 0 || vcIndex == 2 || vcIndex == 4);
if (shouldPop && [viewController isKindOfClass:[UINavigationController class]]) {
[(UINavigationController *)viewController popToRootViewControllerAnimated:YES];
}
}
请记住,这可能不是最好的用户体验 - 用户通常希望他们可以在选项卡之间切换,而不会在返回其他选项卡时丢失其位置或状态。弹出到根视图控制器通常会丢弃该状态,这可能导致挫败感。