UITabBarController - 不显示视图

时间:2011-10-05 07:26:01

标签: iphone objective-c uitabbarcontroller uitoolbar

我正在使用UITabBarController创建一个iPhone应用程序 我想要实现的是,当我点击tabbar上的一些项目时,我不希望它们激活新视图,而不是它我希望它们在当前视图中运行某些功能。 例如,我有一个活动地图的视图,当我点击标签栏上的某个项目时,我希望它在地图上找到当前位置。
我不知道使用UITabBarController是否是最佳解决方案。我还想要1个项目在2个视图之间交换(地图/列表) 在底部或任何完全不同的东西上使用某种ToolBar会更好吗? 我不认为有任何代码需要,但我已经创建了一个UITabBarViewController应用程序,我创建了一个像这样的UITabBarControllerDelegate:

@interface MainTabBarControllerDelegate : NSObject <UIApplicationDelegate, UITabBarControllerDelegate> {
    UIWindow *window;
    UITabBarController *tabBarController;
}

@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet UITabBarController *tabBarController;

@end

@implementation MainTabBarControllerDelegate

@synthesize tabBarController, window;

- (void)applicationDidFinishLaunching:(UIApplication *)application
{
    tabBarController.delegate = self;
    [window addSubview:tabBarController.view];
}

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController{
    return YES;
}

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController{

}

@end

但我不知道如何实现这一功能。 感谢。

1 个答案:

答案 0 :(得分:1)

你没错,你不需要UITabBarControllerUIToolbar或您自己的自定义UIView就足够了。但是如果你想使用UITabBarController,你必须覆盖其通常的功能:

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController{
return NO; //do not select any view controller here
}

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController{
  // find which tab was tapped here and handle the map's current position 
  // location operation accordingly
}

您还可以参考this link了解更多提示......