Iphone UITabBarController-don&x27;我看不见风景

Iphone UITabBarController-don&x27;我看不见风景,iphone,objective-c,uitabbarcontroller,uitoolbar,Iphone,Objective C,Uitabbarcontroller,Uitoolbar,我正在使用UITabBarController创建iPhone应用程序。 我想要实现的是,当我点击tabbar上的某些项目时,我不希望它们激活新视图,而是希望它们在当前视图中运行一些功能。 例如,我有一个地图处于活动状态的视图,当我单击选项卡栏上的某个项目时,我希望它在地图上找到当前位置。 我不知道使用UITabBarController是否是最好的解决方案。我还需要一个项目在两个视图(地图/列表)之间交换。 使用底部的某种工具栏或其他完全不同的工具会更好吗? 我认为不需要任何代码,但我已经创建

我正在使用UITabBarController创建iPhone应用程序。
我想要实现的是,当我点击tabbar上的某些项目时,我不希望它们激活新视图,而是希望它们在当前视图中运行一些功能。 例如,我有一个地图处于活动状态的视图,当我单击选项卡栏上的某个项目时,我希望它在地图上找到当前位置。
我不知道使用UITabBarController是否是最好的解决方案。我还需要一个项目在两个视图(地图/列表)之间交换。
使用底部的某种工具栏或其他完全不同的工具会更好吗?
我认为不需要任何代码,但我已经创建了一个UITabBarViewController应用程序,并创建了一个UITabbarController Delegate,如下所示:

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

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

@end
但是我不知道如何实现这个功能。
谢谢。

你说得对,你不需要
UITabBarController
。一个
UIToolbar
或您自己的自定义
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
}

您还可以参考了解更多提示…

如果您希望执行在同一控制器中执行的某些操作,则使用UITabBarViewController不是首选选项。你可以使用简单的按钮,让你产生一个标签栏的错觉。这将是非常不寻常的&让你的应用程序的潜在用户感到困惑(甚至可能反对苹果的HIG,但不确定)。如果要在当前视图中执行特定任务,请使用UIToolbar或UISegmentedControl。我并不想使用它,这只是我的第一个想法,完全覆盖每个项目(或其中大部分项目)的功能似乎是错误的,我将尝试检查UIToolbar,谢谢:)。
- (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
}