UITabBarController使用

chenyxh2005發表於2014-12-07

文章目的

如何用純程式碼的方式建立UITabBarController

方法


1. 首先開啟XCode並建立一個Empty Application



2. 加入一個Objective-C Class並繼承自UIViewController,取名為FirstViewController

3. 重複一次上面動作,並取名為SecondViewController


4. 之後可在工程中看到此圖

5. 開啟AppDelegate.h,並加入如下程式碼

  1. #import <UIKit/UIKit.h>  
  2.   
  3. @interface AppDelegate : UIResponder <UIApplicationDelegate>  
  4. {  
  5.     UITabBarController* tabBarViewController;  
  6. }  
  7.   
  8. @property (strong, nonatomic) UIWindow *window;  
  9.   
  10. @end  

6. 開啟AppDelegate.m,並加入如下程式碼

  1. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions  
  2. {  
  3.     self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];  
  4.     // Override point for customization after application launch.  
  5.     self.window.backgroundColor = [UIColor whiteColor];  
  6.     [self.window makeKeyAndVisible];  
  7.       
  8.     tabBarViewController = [[UITabBarController alloc]init];  
  9.     [self.window setRootViewController:tabBarViewController];  
  10.       
  11.     FirstViewController* first = [[FirstViewController alloc]init];  
  12.     SecondViewController* second = [[SecondViewController alloc]init];  
  13.     tabBarViewController.viewControllers = [NSArray arrayWithObjects:first, second, nil];  
  14.     [first release];  
  15.     [second release];  
  16. }  

  1. tabBarViewController = [[UITabBarController alloc]init];  
  2. [self.window setRootViewController:tabBarViewController];  
第一行程式碼為初始一個UITabBarController

第二行為將tabBarViewController設定為window的root view controller(根檢視控制器)


  1. tabBarViewController.viewControllers = [NSArray arrayWithObjects:first, second, nil];  
接下來利用UITabBarController的viewControllers屬性,設定First及Second兩個控制器。

7.用程式碼修改TabBar與TabBarItem

  1. UITabBar *tabBar = tabBarViewController.tabBar;  
  2. UITabBarItem *tabBarItem1 = [tabBar.items objectAtIndex:0];  
  3. UITabBarItem *tabBarItem2 = [tabBar.items objectAtIndex:1];  
UITabBarController提供一個tabBar屬性,我們可以透過這個屬性取得UITabBar

並在UITabBar的items屬性取得所有的UITabBarItem


  1. tabBarItem1.title = @"Home";  
  2. tabBarItem2.title = @"Maps";  
透過UITabBarItem的title屬性,可以設定tab bar item上顯示的文字

  1. [tabBarItem1 setFinishedSelectedImage:[UIImage imageNamed:@"home_selected.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"home.png"]];  
  2. [tabBarItem2 setFinishedSelectedImage:[UIImage imageNamed:@"maps_selected.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"maps.png"]];  

- (void)setFinishedSelectedImage:(UIImage *)selectedImage withFinishedUnselectedImage:(UIImage *)unselectedImage
這是UITabBarItem提供的方法,可以設定上面所顯示的圖片,selectedImage是隻目前選擇並顯示的TabBatItem顯示的圖片

unselectedImage則是平常未選中時顯示的圖片


  1. UIImage* tabBarBackground = [UIImage imageNamed:@"tabbar.png"];  
  2. [[UITabBar appearance] setBackgroundImage:tabBarBackground];  
這段程式碼可以修改UITabBar顯示的背景圖

  1. [[UITabBar appearance] setSelectionIndicatorImage:[UIImage imageNamed:@"tabbar_selected.png"]];  
這可以設定選中的UITabBarItem後面的圖

  1. UIColor *titleHighlightedColor = [UIColor colorWithRed:153/255.0 green:192/255.0 blue:48/255.0 alpha:1.0];  
  2. [[UITabBarItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:  
  3.                                                        titleHighlightedColor, UITextAttributeTextColor,  
  4.                                                        nil] forState:UIControlStateHighlighted];  

- (void)setTitleTextAttributes:(NSDictionary *)attributes forState:(UIControlState)state
這個方法可以設定顯示文字的屬性,在這段程式碼中,是設定為顯示文字的顏色





範例下載


其他參考

poolo的tabbar超過五個,如何修改more

相關文章