剛參加工作周崭,希望在這里記錄自己工作中遇到的技術(shù)點,讓未來的自己在工作之余不斷回顧陪拘,也希望能讓同是新手的開發(fā)者遇到同樣的問題時候能夠有所收獲.
UINavigationController的單獨使用:
UINavigationController:導(dǎo)航控制器,是iOS中最常用的多視圖控制器之一裳涛,它用來管理多個試圖控制器咐吼。導(dǎo)航控制器可以認(rèn)為是管理控制器的控制器,主要管理有層級關(guān)系的控制器.UINavigationController 適用于父子頁面的跳轉(zhuǎn).
第一步:刪除SB和工程入口main咳蔚,采用純代碼的方式.新建了ViewController豪嚎、SecondViewController、ThirdViewController三個類.
第二步:在APPDelegate.m中輸入如下的代碼谈火,可以設(shè)置主窗口侈询,并且把ViewController設(shè)置為主控制器
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; self.window.backgroundColor = [UIColor whiteColor]; UINavigationController *navC = [[UINavigationController alloc]initWithRootViewController:[[ViewController alloc]init]]; self.window.rootViewController = naVC; [self.window makeKeyAndVisible];
第三步:在ViewController的viewDidAppear里寫如下代碼,構(gòu)造了一個按鈕糯耍,并定義按鈕的跳轉(zhuǎn)事件扔字,設(shè)置一個標(biāo)題為首頁.
UIButton *button = [[UIButton alloc]initWithFrame:CGRectMake(50, 100, 50, 20)]; [button setTitle:@"跳轉(zhuǎn)" forState:UIControlStateNormal]; [button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; [self.view addSubview:button]; [button addTarget:self action:@selector(jump:) forControlEvents:UIControlEventTouchUpInside]; [self.navigationItem setTitle:@"首頁"];
button的跳轉(zhuǎn)事件:這個時候要把SecondViewController的頭文件包含進(jìn)去
-(void)jump:(id)sender{ [self.navigationController pushViewController:[[SecondViewController alloc] init] animated:YES]; }
這個時候我們就能實現(xiàn)從ViewController這個界面到SecondViewController這個界面的跳轉(zhuǎn)了.
第三步:通過導(dǎo)航欄上右邊按鈕進(jìn)入第三個界面
在SecondViewController的ViewDidLoad里寫如下代碼
//導(dǎo)航欄設(shè)置標(biāo)題 [self.navigationItem setTitle:@"第二頁"]; //設(shè)置右邊的按鈕 UIBarButtonItem *rightItem = [[UIBarButtonItem alloc] initWithTitle:@"Third" style:UIBarButtonItemStyleBordered target:self action:@selector(pushThird)]; self.navigationItem.rightBarButtonItem = rightItem;
右邊按鈕的點擊事件
-(void)pushThird { // NSLog(@"跳轉(zhuǎn)到第三個界面"); ThirdViewController *thirdVc = [[ThirdViewController alloc]init]; [self.navigationController pushViewController:thirdVc animated:YES]; }
在ThirdViewController的ViewDidLoad里給第三個界面起個標(biāo)題
[self.navigationItem setTitle:@"第三頁"];
到此我們運行程序,就可以簡單實現(xiàn)界面的跳轉(zhuǎn)了.
UITabBarController的單獨使用
第一步第二步與上面的UINavigationController類似温技,不需要重復(fù).
第三步:先封裝一個加控制器的方法:
-(void)addChildViewController:(NSString *)vcName title:(NSString *)title imageName:(NSString *)imageName
{
1. 根據(jù)類名字符串創(chuàng)建對象
UIViewController *vc = [[NSClassFromString(vcName) alloc] init];
2. 設(shè)置其tabbarItem上的圖標(biāo)
vc.tabBarItem.image = [UIImage imageNamed:imageName];
3.設(shè)置tabbarItem上的標(biāo)題
vc.tabBarItem.title = title;
}
然后添加子控制器
// 添加子視圖控制器 -(void)addChildViewControllers { [self addChildViewController:@"firstViewController" title:@"第一" imageName:@"m1"]; [self addChildViewController:@"secondViewController" title:@"第二" imageName:@"m3"]; }
第四步:在ViewDidLoad里實現(xiàn)這個方法
[self addChildViewControllers];
這樣就能實現(xiàn)一個UITabBarController.
UINavigationController和UITabBarController的混合使用
這是我們開發(fā)中經(jīng)常遇到的革为,在這里我記下自己所用的一個方法
依舊按照之前的第一步和第二步,但這里要注意:混合使用時候還是把TabBarController作為了主控制器.
第三步:和上面的第三步類似舵鳞,不過要把TabBarController嵌入到導(dǎo)航控制器中
-(void)addChildViewController:(NSString *)vcName title:(NSString *)title imageName:(NSString *)imageName { // 根據(jù)類名字符串創(chuàng)建對象 UIViewController *vc = [[NSClassFromString(vcName) alloc] init]; // 設(shè)置其tabbarItem上的圖標(biāo) vc.tabBarItem.image = [UIImage imageNamed:imageName]; // 設(shè)置tabbarItem上的標(biāo)題 vc.tabBarItem.title = title; // 將其嵌入到一個導(dǎo)航欄控制器中 UINavigationController *navi = [[UINavigationController alloc] initWithRootViewController:vc]; // 設(shè)置導(dǎo)航欄上的標(biāo)題 vc.navigationItem.title = @"首頁"; // 將導(dǎo)航欄控制器添加到tabBarController [self addChildViewController:navi]; }
這樣我們就實現(xiàn)了UINavigationController和UITabBarController的混合使用.
第一次寫震檩,代碼可能比較low,有什么不正確的地方蜓堕,歡迎各位指正