Как вы кодируете две разные вкладки в одном приложении iPhone? - PullRequest
1 голос
/ 21 сентября 2009

Мое приложение требует один набор вкладок в начальном представлении, последний элемент вкладки зарезервирован для покупки в приложении, когда пользователь выбирает. Однако, как только пользователь совершит внутриигровую покупку, я бы хотел, чтобы появился новый набор вкладок. Я хотел бы, чтобы пользователь имел возможность переключаться между бесплатной частью приложения и частью приложения, покупаемой в приложении, с различными панелями вкладок. Например:

"TabBar1" для "TabItem 1" , "TabItem 2" , "TabItem 3" и "TabItem 4" для моего бесплатного приложения, когда пользователь выбирает "TabItem 4" ... появится экран приветствия или покупки в приложении. Если пользователь совершает внутриигровую покупку, "TabBar2" отображается с "TabItem 1" , "TabItem 5" , "TabItem 6" и "TabItem4" . "TabItem1" вернет вас к бесплатной части приложения и "TabBar1" при повторном выборе. Надеюсь, я не запутался ... Как ты этого добился? Спасибо за помощь.

Я забыл добавить, что эта панель вкладок также должна сочетаться с навигационным контроллером.

Ответы [ 2 ]

0 голосов
/ 21 сентября 2009

вы можете изменить представление корневого tabbarcontroller в любое время, также вы можете изменить заголовок и значки tabbaritems. Вот пример:

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 или другой метод, который извлекает изображение из пакета.

0 голосов
/ 21 сентября 2009

Хотя это возможно, я бы настоятельно рекомендовал против этого с точки зрения пользовательского опыта. Замена основного элемента навигационного интерфейса из-под носа пользователя может запутать некоторых пользователей, и в этой ситуации это не очень нужно.

Существует множество других способов обратной связи с пользователем, а также множество способов обработки покупок в приложении, и я настоятельно рекомендую создать несколько макетов методов, которые не могли бы запутать пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...