久久精品精选,精品九九视频,www久久只有这里有精品,亚洲熟女乱色综合一区
    分享

    iphone開發(fā)導航控制器的使用

     quasiceo 2014-12-02

    一. 導航控制器總述:

     

                  UINavigationController是用于構(gòu)建分層應用程序的主要工具,主要采用棧形式來實現(xiàn)視圖。任何類型的視圖控制器都可放入棧中。在設計導航控制器時需要指定根視圖即用戶看到的第一個視圖。根視圖控制器是被導航控制器推入到棧中的第一個視圖控制器。當用戶查看下一個試圖時,棧中將加入一個新的視圖控制器,它所控制的視圖將展示給用戶。我們可以通過導航按鈕來操作分層的應用程序,用它來控制視圖的推入或推出。

     

     

    二. 構(gòu)建導航應用程序的骨架:

     

                Xcode已經(jīng)提供了導航應用程序的模板。但我們還是從零開始創(chuàng)建一個導航的應用程序以便更好的理解導航是如何構(gòu)成及工作的。當然你也可以直接使用Xcode提供好的模板

     

                1. 創(chuàng)建一個基于Windows-Based Application (注:Xcode 4.2.1是創(chuàng)建一個Empty Application 這個模板創(chuàng)建好之后沒有mainWindow.xib 它在代碼中創(chuàng)建了一個window不知道apple公司為什么要這樣做?難道是鼓勵大家少用xib? 呵呵。不過我們可以手動添加一個mainWindow.xib,添加方法請訪問http://blog.csdn.net/decemberd/article/details/7066763)

     

                2. 創(chuàng)建一個視圖控制器用于顯示根視圖。這里你可以顯示任何你想顯示的內(nèi)容。我們僅以FirstLevelViewController作為例子。(你需要在這個類中填充你想顯示的內(nèi)容)

     

                 3. 設置導航控制器

     

                      a. 在程序的AppDelegate.h中加入UINavigationController *navController并添加輸出口。

     

                           b.在.m文件中申明屬性后在didFinishLaunchingWithOption函數(shù)中將控制器加入windows視圖,代碼如下:        [window addSubview:navController.view];

     

              c. 托一個NavigationController控件到mainWindow.xib

     

                      d. 按下control鍵從Nav App Delegate圖標拖到新的NavigationController圖標選擇navController輸出口

     

                      e. 指定根視圖:選中Navigation Controller目錄下的Root ViewController,按下cmd+4鍵打開身份檢查器將基類改為我們剛才創(chuàng)建的FirstLevelViewController類。如果你的FirstLevelViewController類已經(jīng)填充完畢我們就可以開始運行程序了。

     

     

                      看一下,運行程序是不是我們所期望的那樣???

     

     

    三. 構(gòu)建導航按鈕:

     

                   導航應用程序中經(jīng)常應用導航按鈕來控制視圖的推入推出,這種設計模式可以反復的構(gòu)建復雜的分層應用程序,那么導航按鈕是如何實現(xiàn)的呢?

     

     

                  上圖中的Back按鈕和Next按鈕就是導航按鈕我們可以通過UIBarButtonItem來設置導航按鈕,例如下面的代碼就是我們在導航的工具條上創(chuàng)建了兩個按鈕,一個back按鈕一個next按鈕:

     

    //設置導航按鈕

        UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStyleBordered target:self action:@selector(backButtonPressd)];

        //第一個參數(shù)為按鈕標題

        //第二個參數(shù)是按鈕樣式

        //第三個參數(shù)接受消息的對象

        //第四個參數(shù)是按鈕的回調(diào)函數(shù)

       

       

        [[self navigationItem] setLeftBarButtonItem:backButton];

        //設置為左邊按鈕

       

        //釋放按鈕

        [backButton release];

       

        //設置導航按鈕

        UIBarButtonItem *rootButton = [[UIBarButtonItem alloc] initWithTitle:@"Root" style:UIBarButtonItemStyleBordered target:self action:@selector(rootButtonPressd)];

        //第一個參數(shù)為按鈕標題

        //第二個參數(shù)是按鈕樣式

        //第三個參數(shù)接受消息的對象

        //第四個參數(shù)是按鈕的回調(diào)函數(shù)

       

        [[self navigationItem] setRightBarButtonItem:rootButton];

        //設置為右邊按鈕

       

        //釋放按鈕

        [rootButton release];

     

                 這段代碼應該很容易理解,我們創(chuàng)建了一個導航按鈕,設置了標題,按鈕風格和按鈕的回調(diào)函數(shù),然后setLeftBarButtonItem 是將它設置為左邊按鈕相應的setRightBarButtonItem是設置為右邊按鈕

     

     

    四. 導航控制器視圖的推入推出:

     

                那么導航控制器是如何推入一個試圖或者如何推出一個試圖的呢?

                 它是通過navigationController的pushViewController: animated:函數(shù)實現(xiàn)的。看下面這段代碼:

     

    //創(chuàng)建新的試圖并將試圖推入棧中

        SecondLevelViewController*secondController = [[SecondLevelViewController alloc]initWithNibName:@"SecondLevelViewController" bundle:nil];

        UINavigationController  *theNavController = [[UINavigationController alloc]

                                                    initWithRootViewController:secondController];

        [secondControllerrelease];

       theNavController.navigationBar.tintColor =[UIColor blackColor];

        [self.navigationController pushViewController:secondController animated:YES];

        [theNavController release];

     

     

    我們創(chuàng)建了一個試圖并把他加入Nav最后通過pushViewController把它放入棧中此時SecondLevelViewController所控制的視圖也會出現(xiàn)在用戶眼中,下面就是我們新彈出的視圖:

     

    那么如何推出視圖呢?相信你一定已經(jīng)猜到了,push相對應的便是pop,popViewControllerAnimated將當前的視圖控制器推出了棧,還有一種是我們在進行了很多視圖之后想直接返回到根試圖,它也一樣很容易實現(xiàn)popToRootViewControllerAnimated就可以幫我們直接到達棧的最底層也就是根視圖,在下圖的Root按鈕中我們直接調(diào)用[self.navigationController popToRootViewControllerAnimated:YES];就可以回到根試圖了

     

    詳細代碼請查閱Nav demo地址:http://download.csdn.net/detail/decemberd/3920630

    有關(guān)更多的navigationController的操作請查看官方文檔。謝謝


      本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
      轉(zhuǎn)藏 分享 獻花(0

      0條評論

      發(fā)表

      請遵守用戶 評論公約

      類似文章 更多

      主站蜘蛛池模板: 亚洲一区中文字幕人妻| 国产办公室秘书无码精品99| 亚洲AV无码成人精品区| 亚洲天堂精品一区二区| 亚洲国产成人精品福利无码| 精品亚洲麻豆1区2区3区| 国产精品亚洲二区在线播放| 隔壁老王国产在线精品| 无码高潮爽到爆的喷水视频| 亚洲欧美偷国产日韩| 四虎影视永久地址WWW成人 | 日本免费最新高清不卡视频| 无码国内精品久久人妻| 国产精品亚洲二区在线播放| 少妇肉麻粗话对白视频| 国产在线午夜不卡精品影院| 欧美一进一出抽搐大尺度视频| 日韩精品亚洲专在线电影| 日日摸夜夜添狠狠添欧美| 天堂V亚洲国产V第一次| 日日碰狠狠添天天爽无码| 少妇高潮水多太爽了动态图| 国产真人无码作爱视频免费| 国产线播放免费人成视频播放| 色欲香天天天综合网站无码| 精品一区二区成人精品| 国产精品一码二码三码| 人妻少妇久久中文字幕| 欧美大胆老熟妇乱子伦视频| 色一情一乱一伦麻豆| 尹人香蕉久久99天天拍| 国产对白老熟女正在播放| 国产精品无码无卡在线播放| 中文字幕精品亚洲无线码二区| 中文字幕人妻不卡精品| 少妇被躁爽到高潮无码人狍大战| 丰满少妇人妻HD高清大乳| 福利一区二区在线播放| 免费观看一区二区三区| 国产成人AV性色在线影院| 亚洲日韩性欧美中文字幕|