2009-09-21 69 views
1

我的應用程序需要在初始視圖中有一組選項卡,最後一個選項卡項目在用戶選擇後保留用於應用內購買。但是,一旦用戶進行應用內購買,我想要出現一組新的標籤。我希望用戶能夠使用不同的標籤欄在應用程序的免費部分和應用程序的應用程序內購買部分之間切換。例如:如何在一個iPhone應用程序中編寫兩個不同的tabbars?

「TabBar1」「的TabItem 1」「的TabItem 2」「的TabItem 3」,和「TabItem的4」爲我的免費應用程序,用戶選擇時「TabItem 4」 ...將出現歡迎或應用內購買屏幕。如果用戶使應用程序內購買,「TabBar2」出現帶有「的TabItem 1」「的TabItem 5」「的TabItem 6」,和「TabItem4」「TabItem1」會將您帶回應用程序的免費部分,並在您再次選擇時返回「TabBar1」。希望我沒有混淆......你是怎麼做到的?謝謝您的幫助。

我忘了補充說這個Tabbar也要和導航控制器結合使用。

回答

0

您可以隨時更改根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

感謝Nava Carmon的即時回覆。我現在無法執行此代碼。你能不能簡單介紹一下設置。這段代碼將成爲我的應用程序的支柱,儘管我的技術非常強大,但我對編碼還是很陌生,所以我可能需要您牽着我的手才能將此代碼實施到我的項目中。歡迎任何幫助 – SympleMyne 2009-09-21 16:43:01

+0

您能詳細說明問題所在嗎?請提供更多細節。我很樂意幫助 – 2009-09-21 19:06:49

0

雖然這可能是可能的,但我會從用戶體驗的角度強烈反對它。將導航用戶界面的核心部分從用戶鼻子下面切換出來,勢必會讓一些用戶感到困惑,並且在這種情況下並不需要它。

還有很多其他方式可以給用戶提供反饋,並有很多方法來處理應用內購買,我強烈建議您做一些不會讓用戶困惑的方法模型。

相關問題