亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

【一步一步學(xué)IOS5 】 使用Storyboards創(chuàng)建導(dǎo)航

系統(tǒng) 2925 0

導(dǎo)航控制器(Navigation Controller)是什么?

?

和表視圖(Table View)一樣,導(dǎo)航控制器是另一個(gè)UI控件,在iOS App中經(jīng)常看到。它為分層內(nèi)容提供了向下導(dǎo)航的界面。我們看看內(nèi)置的Photos App、YouTube 和通訊錄(Contacts)。這些App都使用了導(dǎo)航控制器顯示分層的內(nèi)容。通常表視圖和導(dǎo)航控制器在多個(gè)App中同時(shí)存在,當(dāng)然,這并不意味著你必須同時(shí)使用它們。

?

1.Storyboards 預(yù)覽

?


【一步一步學(xué)IOS5 】 使用Storyboards創(chuàng)建導(dǎo)航控制器和表視圖

Storyboard 是 Xcode 4.2 發(fā)布時(shí)提供的一項(xiàng)新功能。它提供了一個(gè)全新的方式,供iOS開發(fā)人員創(chuàng)建和設(shè)計(jì)用戶界面。在引入Storyboard 之前,對(duì)于初學(xué)者而言非常困難創(chuàng)建導(dǎo)航(和tab)界面。每一個(gè)界面存放在一個(gè)獨(dú)立的nib文件中,然后你必須編寫代碼連接所有的界面,并且描述導(dǎo)航如何工作。

?

通過使用Storyboard,所有屏幕保存在一個(gè)單一文件中,這樣你就可以預(yù)覽app的可視化展示,以及屏幕是如何鏈接的。Xcode提供了內(nèi)置的編輯器來設(shè)計(jì)Storyboards.你可以簡(jiǎn)單點(diǎn)擊來定義不同屏幕之間的切換(稱為Segues - 聯(lián)線,代表兩個(gè)場(chǎng)景Scene之間的過度轉(zhuǎn)換),但這也不是說你不必為用戶界面編寫代碼,Storyboards 顯著簡(jiǎn)化了你需要編寫的代碼量。下圖顯示Xcode中Storyboards 的樣子:


【一步一步學(xué)IOS5 】 使用Storyboards創(chuàng)建導(dǎo)航控制器和表視圖

2.場(chǎng)景(Scene) 和聯(lián)線(Segues)

?

在使用Storyboards 時(shí),一定會(huì)遇到場(chǎng)景(Scene)和聯(lián)線(Segues)兩個(gè)術(shù)語。在一個(gè)Storyboard中,場(chǎng)景指一個(gè)單一的視圖控制器和它的視圖。每一個(gè)場(chǎng)景都有一個(gè)場(chǎng)景塢(Dock),主要用來在視圖控制器和視圖之間,建立方法和Outlet的連接。

?

聯(lián)線(Segue)位于兩個(gè)場(chǎng)景之間,管理兩個(gè)場(chǎng)景之間的過度,其中Push和Modal是兩個(gè)常見的過度類型。

?

3.在Storyboards 中創(chuàng)建導(dǎo)航控制器

?

現(xiàn)在著手創(chuàng)建我們自己的 Storyboards.我們將創(chuàng)建一個(gè)簡(jiǎn)單的App,其中同時(shí)用到UITableView 和 UINavigationController.

?

我們使用表現(xiàn)圖顯示菜單列表。在用戶選擇任何菜單時(shí),App導(dǎo)航到另外一個(gè)畫面,顯示更詳細(xì)的信息。

?

首先,啟動(dòng)Xcode,并使用Single View application 模板創(chuàng)建一個(gè)新的項(xiàng)目。

?

輸入如下選項(xiàng):

?

Product Name : RecipeBook

?

Company identifier : com.appcoda

?

Class Prefix : RecipeBook

?

Device Family: : iPhone

?

確保勾選Use Storyboards 選項(xiàng)。

?

選用 Use Automatic Reference Counting

?

點(diǎn)擊繼續(xù)保存項(xiàng)目

?

這里與前面項(xiàng)目不同的一點(diǎn),.xib 文件(interface builder) 替換為MainStoryboard.stroyboard 文件了。

?

默認(rèn)情況下,Xcode 創(chuàng)建一個(gè)標(biāo)準(zhǔn)的視圖控制器。我們將使用導(dǎo)航控制器(Navigation Controller)控制畫面的導(dǎo)航。首先更改視圖控制器(View Controller)為導(dǎo)航控制器,選擇Editor菜單 / Embed in 子菜單, 接著選擇Navigation Controller,

?

Xcode 自動(dòng)嵌入RecipeBook 視圖控制器到導(dǎo)航控制器中,項(xiàng)目的畫面如下圖所示:

?

?


【一步一步學(xué)IOS5 】 使用Storyboards創(chuàng)建導(dǎo)航控制器和表視圖

現(xiàn)在我們運(yùn)行App 看看效果,點(diǎn)擊Run按鈕,你將看到一個(gè)空白的視圖,并且添加了一個(gè)導(dǎo)航條。這表明你已經(jīng)成功嵌入了RecipeBook 視圖控制器到導(dǎo)航控制器中。

?


【一步一步學(xué)IOS5 】 使用Storyboards創(chuàng)建導(dǎo)航控制器和表視圖

4.添加表視圖及其數(shù)據(jù)

?

接著,我們將添加表視圖顯示菜譜。從對(duì)象庫(Object Library)選擇Table View,并拖拉到Recipe Book View Controller 中。

?

需要注意的是:當(dāng)編輯器是最小化時(shí),你不能拖動(dòng)控件;如果你不能拖動(dòng)Table View 到視圖控制器,最大化編輯器,在嘗試一次。

?

接下來,我們需要編寫代碼填充數(shù)據(jù)(如菜譜)。在項(xiàng)目導(dǎo)航中,選擇Recipe BookViewController.h 文件,在UIViewController之后,添加<UIT ableViewDelegate,UITableViewDataSource>,代碼如下所示:

?

?

#import <UIKit/UIKit.h>

?

@interface RecipeBookViewController : UIViewController < UITableViewDelegate , UITableViewDataSource >

?

@end


接著,選擇RecipeBookViewController.m 文件,定義一個(gè)實(shí)例變量(如菜譜數(shù)組)用來存放表數(shù)據(jù)。

并填寫初始化方法,接著我們實(shí)現(xiàn)先前的兩個(gè)協(xié)議。完成代碼如下:

@implementation RecipeBookViewController

{

? ? NSArray *recipes;

}

?

- ( void )viewDidLoad

{

? ? [ super viewDidLoad ];

? ? //Initialize table data

? ? recipes = [ NSArray arrayWithObjects : @"Egg Benedict" , @"Mushroom Risotto" , @"Full Breakfast" , @"Hamburger" , @"Ham and Egg sandwith" , @"Creme Brelee" , @"White Chcolate Dount" , @"Starbucks Coffee" , @"Vegetable Curry" , @"Instant Noodle with Egg" , @"Noodle with BBQ Pork" , @"Japanese Noodle with Pork" , @"Green Tea" , @"Thai Shrimp Cake" , @"Angry Birds Cake" , @"Ham and Cheese Panini" , nil ];

?

}

?

- ( void )viewDidUnload

{

? ? [ super viewDidUnload ];

? ? // Release any retained subviews of the main view.

}

?

- ( BOOL )shouldAutorotateToInterfaceOrientation:( UIInterfaceOrientation )interfaceOrientation

{

? ? return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown );

}

?

- ( NSInteger )tableView:( UITableView *)tableView numberOfRowsInSection:( NSInteger )section

{

? ? return [ recipes count ];

}

?

- ( UITableViewCell *)tableView:( UITableView *)tableView cellForRowAtIndexPath:( NSIndexPath *)indexPath

{

? ? static NSString *simpleTableIdentifier = @"RecipeCell" ;

?

? ? UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier :simpleTableIdentifier];

?

? ? if (cell == nil ) {

? ? ? ? cell = [[ UITableViewCell alloc ] initWithStyle : UITableViewCellStyleDefault reuseIdentifier :simpleTableIdentifier];

? ? }

?

? ? cell. textLabel . text = [ recipes objectAtIndex :indexPath. row ];

? ? return cell;

}

?

@end


最后,我們需要在表視圖和剛剛創(chuàng)建的兩個(gè)方法之間建立連接,返回Storyboard,安裝Control鍵,選擇Table View并拖拉到視圖控制器的圖標(biāo)上,如下圖所示:


【一步一步學(xué)IOS5 】 使用Storyboards創(chuàng)建導(dǎo)航控制器和表視圖
?
釋放按鈕和鼠標(biāo),彈出窗口顯示dataSource 和 delegate,選擇dataSource在表視圖和它的數(shù)據(jù)源(Data Source)之間連接,重復(fù)上述步驟,在表視圖和委托(Delegate)之間也建立連接。

在測(cè)試我們的App之前,還有一項(xiàng)工作是為導(dǎo)航條添加一個(gè)標(biāo)題。選擇Recipe Book View Controller 的導(dǎo)航條,選擇Attribute Inspector 窗口輸入Title 屬性。

現(xiàn)在是時(shí)候執(zhí)行你的App了。點(diǎn)擊Run按鈕,并測(cè)試App。


【一步一步學(xué)IOS5 】 使用Storyboards創(chuàng)建導(dǎo)航控制器和表視圖
?
5.介紹原型單元格(Prototype Cell)

還記得前面我們定制表單元格教程嗎?之前,我們演示了如何使用 Interface Builder 設(shè)計(jì)定制表單元格。簡(jiǎn)言之,你需要為單元格創(chuàng)建了一個(gè)單獨(dú)的nib 文件,并編寫代碼加載到表視圖中。通過引入Stroyboard 中的原型單元格(Phototype Cell),可以更簡(jiǎn)單創(chuàng)建定制的單元格。原型單元格讓你在Storyboard編輯器中輕松設(shè)計(jì)表單元格的布局。

這里,我們不會(huì)詳細(xì)介紹定制化,簡(jiǎn)單在單元格添加Disclosure Indicator.

下面添加原型單元格(Phototype Cell),選擇表視圖(Table View)。 在Attributes Inspector 窗口,修改Prototype Cells 值從0到1。在你修改該值之后,Xcode自動(dòng)顯示一個(gè)原型單元格。為了顯示另外一個(gè)表格類型(table style),我們修改Style 選項(xiàng)值,從Plain 修改為Group。

接著,選擇PrototypeCell,更改Accessory 選項(xiàng)值為Disclosure Indicator.另外,定義可重用的標(biāo)示符很重要,你可以將這個(gè)標(biāo)示符當(dāng)做單元格的ID,我們使用它指向一個(gè)特定的原型單元格。這里,我們定義標(biāo)示符(identifier)為RecipeCell,和代碼保持一致。

現(xiàn)在,再次運(yùn)行App,運(yùn)行界面有點(diǎn)不同了。我們已經(jīng)更改了表視圖樣式為Grouped,并添加了Disclosure indicator 標(biāo)示符。


【一步一步學(xué)IOS5 】 使用Storyboards創(chuàng)建導(dǎo)航控制器和表視圖
?
6.添加詳細(xì)視圖控制器

上面例子中,缺少的部分是詳細(xì)視圖,用來顯示菜單的詳細(xì)信息。

當(dāng)用戶輕拍任一菜單時(shí),會(huì)顯示詳細(xì)視圖控制器。

OK,現(xiàn)在添加一個(gè)新的視圖控制器作為詳細(xì)視圖控制器。

【一步一步學(xué)IOS5 】 使用Storyboards創(chuàng)建導(dǎo)航控制器和表視圖
?

本例子目的只是演示如何實(shí)現(xiàn)導(dǎo)航控制器。我們盡量讓詳細(xì)視圖簡(jiǎn)單一點(diǎn),僅添加一個(gè)Label顯示菜單名稱。

?

從對(duì)象庫中拖拉Label控件,并放置在視圖的中心位置。你可以更改字體大小或類型,讓Label更好看一些。

?

接著,我們添加一個(gè)聯(lián)線(Segue),連接原型單元格和新添加的視圖控制器。添加一個(gè)聯(lián)線對(duì)象非常簡(jiǎn)單。按住Control鍵,點(diǎn)擊原型單元格,并拖拉到視圖單元格。

?


【一步一步學(xué)IOS5 】 使用Storyboards創(chuàng)建導(dǎo)航控制器和表視圖

?

釋放按鈕,彈出窗口中顯示3種類型的聯(lián)線,分別是P ush、Modal和Custom。

?

之前解釋過,聯(lián)線定義了兩個(gè)場(chǎng)景之間的過度類型,對(duì)于標(biāo)準(zhǔn)的導(dǎo)航,我們使用Push,一旦選擇,Xcode自動(dòng)使用Push聯(lián)線連接兩個(gè)場(chǎng)景。

?

現(xiàn)在再次運(yùn)行App,在你選擇任一菜單時(shí),App將顯示詳細(xì)視圖控制器。盡管詳細(xì)視圖控制僅僅顯示一個(gè)標(biāo)簽,但是我們已經(jīng)讓導(dǎo)航功能工作正常了。


【一步一步學(xué)IOS5 】 使用Storyboards創(chuàng)建導(dǎo)航控制器和表視圖

?

【一步一步學(xué)IOS5 】 使用Storyboards創(chuàng)建導(dǎo)航控制器和表視圖


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 亚洲国产精品成人久久 | 国内精品伊人久久久影院 | 成人毛片免费网站 | 免费欧美一级片 | 青青青视频在线 | 亚洲乱码视频在线观看 | 中文字幕在线不卡精品视频99 | 中文日韩 | 老司机福利精品 | 91亚洲精品一区二区在线观看 | 韩日视频在线观看 | 精品国产免费观看久久久 | 日韩成人精品在线 | 99久久免费国产香蕉麻豆 | 999毛片| 久久精品亚洲精品国产色婷 | 国内视频一区二区 | 443hk四虎 在线观看 | 精品国产视频在线观看 | 日韩亚洲欧美在线观看 | 亚洲精品视频久久 | 欧美人与动人物a级网站 | 麻豆日韩区久久综合 | 香港a毛片免费全部播放 | 天天色天天做 | 99热在线观看精品 | 亚洲欧美日本在线观看 | 欧美性生交xxxxx久久久 | 免费aa毛片 | 日韩欧美亚洲精品 | 色涩网站在线观看 | 国产人做人爱视频精品 | 国产伦精品一区三区视频 | 亚洲视频中文 | 黄色片在线免费观看视频 | 极品美女一级毛片 | 欧美大狠狠大臿蕉香蕉大视频 | 亚洲综合涩 | 色综合天天综合网国产成人 | 自拍 亚洲 欧美 | 国产精品ⅴ视频免费观看 |