如何在一个iPhone应用程序中编写两个不同的标签栏?

时间:2009-09-21 03:55:20

标签: iphone

我的应用程序在初始视图中需要一组选项卡,一旦用户选择,最后一个选项卡项目将保留用于应用内购买。但是,一旦用户进行应用内购买,我希望显示一组新选项卡。我希望用户能够使用不同的标签栏在应用程序的免费部分和应用程序的应用程序内购买部分之间切换。例如:

“TabBar1”“TabItem 1”“TabItem 2”“TabItem 3”当我的免费应用程序“TabItem 4”时,当用户选择“TabItem 4”时......将出现欢迎或应用程序内购买屏幕。如果用户进行应用内购买,则“TabItem 1”“TabItem 5”“TabItem会出现”TabBar2“ 6“”TabItem4““TabItem1”会在您再次选中时返回应用的免费部分和“TabBar1”。希望我没有混淆......你怎么做到这一点?谢谢您的帮助。

我忘了补充一点,这个Tabbar也要与导航控制器结合使用。

2 个答案:

答案 0 :(得分:0)

虽然这可能是可能的,但我会强烈建议从用户体验的角度来反对它。将导航UI的核心部分从用户鼻子下面交换出来,一定会让一些用户感到困惑,在这种情况下并不是真的需要。

还有很多其他方法可以向用户提供反馈,还有很多方法可以处理应用内购买,我强烈建议您制作一些不会让用户感到困惑的方法模型。

答案 1 :(得分:0)

您可以随时更改root tabbarcontroller的视图,也可以更改tabbaritems title&图标。这是一个例子:

MyAppDelegate *appController = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];
    // Setting 1st tab + view + icon
    ViewController1 *viewController1 = [[ViewController1 alloc] initWithNibName:@"ViewController1" bundle:nil];
favoritesController.title = @"Tab1 Title";
UINavigationController *navigationTab1Controller = [[[UINavigationController alloc] initWithRootViewController: viewController1] autorelease];
UITabBarItem    *anItem = [[[UITabBarItem alloc] initWithTabBarSystemItem:UITabBarSystemItemFavorites tag:0] autorelease];
navigationTab1Controller.tabBarItem = anItem;

    // Setting 2st tab + view + icon
ViewController2 *viewController2 = [[ViewController2 alloc] initWithNibName:@"ViewController2" bundle:nil];
searchController.title = @"Tab2 Title";
UINavigationController *navigationTab2Controller = [[[UINavigationController alloc] initWithRootViewController:searchController] autorelease];
UITabBarItem    *anItem1 = [[[UITabBarItem alloc] initWithTabBarSystemItem:UITabBarSystemItemSearch tag:1] autorelease];
navigationTab2Controller.tabBarItem = anItem1;

    // Now setting the array of tab views, each one attached to its navigation controller
NSArray *array = [[NSArray alloc] initWithObjects:self.navigationController, navigationTab1Controller, navigationTab2Controller, nil];
[appController.tabBarController setViewControllers:array animated:NO];
appController.tabBarController.selectedViewController = self.navigationController;
UITabBarItem    *anItem2 = [[[UITabBarItem alloc] initWithTitle:@"Tab3 Title" image:[appController  thumbnailImage:@"image"] tag:2] autorelease];
self.navigationController.tabBarItem = anItem2;

我正在更改视图和标签集,具体取决于我的应用程序状态。希望它有所帮助

编辑:函数thumbnailImage是我为缓存图像而编写的函数,可以避免内存泄漏,您可以使用imageNamed或其他技术从包中检索图像。