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