我打算挖掘shawnwall指出的idevrecipes示例,但还有另一个可能的答案,假设您希望New按钮匹配标准UITabBarButton外观。我同意它可能不是最好的用户界面,但它是可行的。
对于初学者,您可以为New项目创建一个虚拟视图控制器。我不是说你应该复制地图控制器或任何东西,我只是说创建一个空的视图控制器和存储到它(或它的位置)的一个属性。假设你在application:didFinishLaunchingWithOptions:
创建标签栏,它会是这个样子。
self.newViewController = [[UIViewController alloc] init];
self.newViewController.title = NSLocalizedString(@"New", nil);
self.newViewController.image = [UIImage imageNamed:"new.png"];
掉落,在在标签栏控制器的viewControllers
属性相应的位置查看控制器。
保存对地图控制器的引用,与保存虚拟新控制器的方式相同。
如果您还没有完成,请将您的tabBarController的委托设置为您的应用程序委托。您可能需要声明的是应用程序委托符合UITabBarControllerDelegate
。
UITabBarDelegate
为您提供了一些跟踪标签栏更改的挂钩。 tabBarController:shouldSelectViewController:
看起来是为我们勾在您需要的行为的适当位置。
- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
{
if ([viewController isEqual:self.newViewController]) {
self.tabBarController.selectedViewController = self.mapViewController;
// Whatever logic you need to start the recording
return NO;
}
return YES;
}
用户交互的外观有点奇怪 - 用户选中中间项目(新建),但选中了左侧的项目(地图)。如果你想要“标签栏触发行为”行为,我会去idevrecipes路线,并使按钮视觉上不同。如果你已经结婚了标签栏项目看,但是,我相信这是你如何完成它。
用户转到地图选项卡并添加一个“新”按钮对用户来说更直观吗?至少对我来说是这样。 Apple不建议跳转到代表用户的选项卡上。 –
该应用程序背后的想法是用于记录和共享用户周围的“风景”路线和图片。我一直在使用POP(纸上原型,应用程序商店中的免费应用程序)将线框和原型放在一起来测试用户体验,并且让标签栏中间的按钮在开始记录路线时感觉更自然在Feed或地图上具有“新建”的NavBar项目。 – HighFlyingFantasy
我明白你的意思了。但是,有两个不同的地图可能会让用户感到困惑,特别是如果他们几乎完成同样的事情。我想我会把地图标签放在中间位置,并创建一个大按钮作为地图叠加层。我也有一个基于地图的应用程序,有多个选项卡和多个地图,但最终决定创建一个地图选项卡,用户可以在其上执行任何所需的任何操作,从而更容易。如果你仍然认为这是要走的路,那么你可以考虑视图控制器遏制(iOS 6的一个新功能)。 –