• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            厚積薄發(fā),滴水穿石

            搬家到主站了:http://www.cnblogs.com/cokecoffe/
            隨筆 - 45, 文章 - 8, 評論 - 12, 引用 - 0
            數(shù)據(jù)加載中……

            NavigationController的使用

            1.創(chuàng)建

            通過xib創(chuàng)建

            通過代碼創(chuàng)建

            一個(gè)UINavigationcontroller包括 navigation bar,可選的navigation toolbar,RootViewController.

            2.導(dǎo)航棧

            有四個(gè)方法

              例如,想推進(jìn)一個(gè)新的viewcontroller,到導(dǎo)航棧中,代碼:
            - (void)tableView:(UITableView *)tableView
                    didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
                [[tableView cellForRowAtIndexPath:indexPath] setSelected:NO animated:YES];//1.
             
                DetailsViewController *detailsViewController = [[DetailsViewController alloc]
                    initWithNibName:@"DetailsViewController" bundle:nil];
                [self.navigationController pushViewController:detailsViewController];
                [detailsViewController release];
            }
              這里有兩個(gè)需要注意的地方
              1.進(jìn)入下一個(gè)頁面的時(shí)候,table中的選擇行要取消。
              2.記得release要push的controller.因?yàn)閷?dǎo)航棧是retain的。

            3.配置Navigation bar

            可能大家想直接訪問navigationcontroller 的navigation bar。但是通常我們不這樣做。而是維護(hù)每個(gè)viewcontroller的 navigation item。

            這里不要將navigation item 與 navigation bar 混淆,navigation item不是UIView的子類。它是一個(gè)用來更新navigtion bar的存儲(chǔ)信息的類。

            還是上代碼說明:

            - (void)tableView:(UITableView *)tableView
                    didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
              [[tableView cellForRowAtIndexPath:indexPath] setSelected:NO animated:YES];
             
              Person *person;
             
              // Some code that sets person based on the particular cell that was selected
             
              DetailsViewController *detailsViewController = [[DetailsViewController alloc]
                initWithNibName:@"DetailsViewController" bundle:nil];
              detailsViewController.navigationItem.title = person.name;
              [self.navigationController pushViewController:detailsViewController];
              [detailsViewController release];
            }
            detailsViewController.navigationItem.title = person.name;這句話的意思就是把二級界面的導(dǎo)航標(biāo)題設(shè)置成person.name

            要注意兩點(diǎn):1.我們并沒有直接操作navigation bar 2.在push 新的controller之前設(shè)置標(biāo)題

            當(dāng)新的detailcontroller被push后,UINavigationController會(huì)自動(dòng)更新navigation bar。

            4.返回按鈕

            默認(rèn)情況下,當(dāng)你將一個(gè)新的viewcontroller推入棧的時(shí)候,返回按鈕將顯示前一個(gè)頁面的controller的 navigation item的title。

            如果想定制返回按鈕的標(biāo)題還有事件的話,可以用以下代碼。

            UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Back"
                  style:UIBarButtonItemStylePlain target:nil action:nil];
            self.navigationItem.backBarButtonItem = backButton;
            [backButton release];

            注意,這里的self是第一級的view controller。這樣的話第二級的頁面將顯示“Back”

            5.左右按鈕

            navigation item還有兩個(gè)屬性leftBarButtonItem rightBarButtonItem。

            一般leftBarButtonItem只出現(xiàn)在RootviewController中使用,因?yàn)槠渌撁嬉话愣硷@示一個(gè)返回按鈕。

            UIBarButtonItem *settingsButton = [[UIBarButtonItem alloc] initWithTitle:@"Settings"
                  style:UIBarButtonItemStylePlain target:self action:@selector(handleSettings)];
            self.navigationItem.rightBarButtonItem = settingsButton;
            [settingsButton release];

            這會(huì)在右側(cè)添加一個(gè)“Setting”的按鈕,并觸發(fā)handleSetting事件。

            6.在首頁隱藏Navigation Bar

            在RootViewController.m中實(shí)現(xiàn)如下:

            - (void)viewWillAppear:(BOOL)animated {
            	[super viewWillAppear:animated];
             
            	[self.navigationController setNavigationBarHidden:YES animated:YES];
            }
             
            - (void)viewWillDisappear:(BOOL)animated {
            	[super viewWillDisappear:animated];
             
            	[self.navigationController setNavigationBarHidden:NO animated:YES];
            }

            這篇文章翻譯自http://www.iosdevnotes.com/2011/03/uinavigationcontroller-tutorial/

             

             

            posted on 2012-06-03 17:34 Wangkeke 閱讀(10208) 評論(1)  編輯 收藏 引用 所屬分類: IOS

            評論

            # re: NavigationController的使用  回復(fù)  更多評論   

            寫的很不錯(cuò),這樣的總結(jié),對于我這種新手一目了然。
            2012-06-15 11:40 |
            久久人妻少妇嫩草AV蜜桃| 日韩影院久久| 久久av无码专区亚洲av桃花岛| 久久亚洲AV成人无码软件 | 99精品久久精品一区二区| 久久精品国产亚洲AV不卡| 国产成人精品免费久久久久| 观看 国产综合久久久久鬼色 欧美 亚洲 一区二区 | 伊人久久精品无码二区麻豆| AV狠狠色丁香婷婷综合久久| 国内精品伊人久久久久影院对白 | 久久se精品一区二区| 久久av高潮av无码av喷吹| 精品一二三区久久aaa片| 欧美激情精品久久久久| 亚洲va久久久久| 日本久久久久久中文字幕| 欧美久久天天综合香蕉伊| 99国产精品久久久久久久成人热| 国产激情久久久久影院老熟女免费 | 久久国产欧美日韩精品| 久久久久国产精品嫩草影院| 亚洲AV无码久久| 亚洲日韩欧美一区久久久久我| 久久精品国产免费一区| 一本一本久久aa综合精品| 久久久中文字幕日本| 91精品国产综合久久香蕉| 狠狠色丁香久久婷婷综合五月| AV无码久久久久不卡蜜桃| 久久午夜免费视频| 欧美性猛交xxxx免费看久久久| 国产精品va久久久久久久| 99麻豆久久久国产精品免费| 无码日韩人妻精品久久蜜桃 | 国产精品美女久久久久网| 亚洲中文字幕久久精品无码喷水| 性高湖久久久久久久久AAAAA| 久久av免费天堂小草播放| 91亚洲国产成人久久精品| 99久久精品九九亚洲精品|