【问题标题】:UITabBarController - don't show the viewUITabBarController - 不显示视图
【发布时间】:2011-10-05 07:26:00
【问题描述】:

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

但我不知道如何实现该功能。 谢谢。

【问题讨论】:

  • 如果您希望执行一些您所说的在同一个控制器中执行的操作,那么使用 UITabBarViewController 不是首选选项。您可以使用简单的按钮,这会给您带来 tabBar 的错觉。
  • 这将是非常不寻常的&混淆你应用程序的潜在用户的废话(甚至可能反对苹果的 HIG,但不确定)。如果您想在当前视图中执行特定任务,请使用 UIToolbar 或 UISegmentedControl。

标签: iphone objective-c uitabbarcontroller uitoolbar


【解决方案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获取更多提示...

【讨论】:

  • 不是我想使用它,这只是我的第一个想法,完全覆盖每个项目(或大多数项目)的功能似乎是错误的,我会尝试检查 UIToolbar,谢谢:)。
猜你喜欢
  • 2017-07-17
  • 1970-01-01
  • 1970-01-01
  • 2019-06-06
  • 2019-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多