iOS學習之第二個View使用UITabBarViewController

來源:互聯網
上載者:User

前面有一篇博文iOS學習之Tab Bar的使用和視圖切換 這是在AppDelegate裡使用Tabbar,這樣的程式開啟就是TabbarView了,有時候我們需要給程式做一些協助頁面,或者登入頁面,之後才跳轉到tabbar View裡,或者後面的頁面才使用Tabbar的,那這樣怎麼實現呢?

我們建立一個視圖,然後在這個視圖通過[selfpresentModalViewController : tabBaranimated:YES];跳轉來實現。

       當程式中需要在多個View直接切換的時候,可以使用 UINavigationController,也可以用 ModalViewController。UINabigationController 是通過導航條來切換多個 view。而如果 view 的數量比較少,且顯示領域為全屏的時候,用 ModalViewController 就比較合適(比如需要使用者輸入資訊的view,結束後自動回複到之前的view)

1、建立一個Single View app,按Command + N建立三個ViewController ,都選上.xib檔案。

1.1 建立的Controller分別是:TestOneController TestTwoController  TestThirdViewController ,他們都繼承UIViewController。


單擊xib檔案,在.xib檔案的屬性視窗裡修改View的顏色,這樣好在切換頁面的時候區分出來是切換了頁面。

好吧,我的ThirdViewController沒有xib,可能是漏了,不過也沒關係,一樣能用。

1.2 添加TabBarViewController

最重要的是再添加一個TabBarViewController,這個需要繼承的UITabBarController

2、在ViewController也就是程式進來的第一個頁面。在這裡添加一個跳轉的Button,並加上Action,然後在Action裡實現跳轉到tabbar.

ViewController.m裡實現代碼。這就跳轉,把剛才建立的三個ViewController都添加到Tabbar裡

- (IBAction)gotoTabbarVIew:(id)sender {    NSMutableArray *items = [[NSMutableArray alloc] init];    TestOneController *testOne1 = [[TestOneController alloc] init];    [items addObject:testOne1];    TestTwoController *twoController = [[TestTwoController alloc] init];    [items addObject:twoController];    TestThirdViewController *thirdController = [[TestThirdViewController alloc] init];    [items addObject:thirdController];    // items是數組,每個成員都是UIViewController    TabBarViewController *tabBar = [[TabBarViewController alloc] init];    [tabBar setTitle:@"TabBarController"];    [tabBar setViewControllers:items];        [self presentModalViewController : tabBar animated:YES];}

這樣運行跳轉到TabbarView裡的了,但是現在的tabbarView裡面的三個Tab 按鈕都空白的黑色。怎麼添加表徵圖和其他樣式呢?

3、添加UITabBarItem

在三個ViewController.m檔案裡添加對應的UITabBarItem,代碼如下

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];    if (self) {        UITabBarItem *item = [[UITabBarItem alloc]initWithTabBarSystemItem:UITabBarSystemItemMostRecent tag:1];        self.tabBarItem = item;        self.tabBarItem.badgeValue = [NSString stringWithFormat:@"%d",9];    }    return self;}

UITabBarSystemItemMostRecent這個item的風格常量,可以根據喜好改變。除此之外還可以用自訂的圖片做為item。這裡就不示範自己添加圖片的方式了。

self.tabBarItem.badgeValue 這個在tabbar item上顯示泡泡的數字。

對應的其他ViewController都添加上,tag寫不同的數字,後面要用到的。現在運行就有效果了

切換

4、監聽Item的點擊事件

Tabbar有了,怎麼監聽你點了哪個item呢?

實現UITabBarDelegate。在apple的文檔裡查了一下,實現

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item這個方法即可監聽

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item{    if(item.tag == 1){        NSLog(@"TestOneController");    }else if(item.tag == 2){        NSLog(@"TestTwoController");    }else {        NSLog(@"TestThirdController");    }}

通過tag判斷,運行切換:列印log。

2012-06-28 20:56:19.144 View2TaBBarView[5614:f803] TestTwoController2012-06-28 20:56:19.785 View2TaBBarView[5614:f803] TestThirdController2012-06-28 20:56:20.363 View2TaBBarView[5614:f803] TestTwoController2012-06-28 20:56:20.843 View2TaBBarView[5614:f803] TestOneController

5、返回上個頁面

通過    [self.parentViewControllerdismissModalViewControllerAnimated:YES]; 返回上個頁面

在ThirdView添加一個button。添加Action事件。代碼如下:

-(void)backAction:(id)sender{    [self.parentViewController dismissModalViewControllerAnimated:YES];    }- (void)viewDidLoad{    [super viewDidLoad];    [self.view setBackgroundColor:[UIColor brownColor]];    UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(40, 50, 60, 30)];    [button setTitle:@"返回" forState:UIControlStateNormal];    [button addTarget:self action:@selector(backAction:) forControlEvents:UIControlEventTouchUpInside];    [self.view addSubview:button];// Do any additional setup after loading the view.}

運行,點返回button,返回了第一個頁面了:

例子的代碼:http://download.csdn.net/detail/totogo2010/4399715

著作權聲明:本文由http://blog.csdn.net/totogo2010/原創,歡迎轉載分享。請尊重作者勞動,轉載時保留該聲明和作者部落格連結,謝謝!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.