欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

【一步一步學IOS5 】 使用Storyboards創建導航

系統 2988 0

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

?

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

?

1.Storyboards 預覽

?


【一步一步學IOS5 】 使用Storyboards創建導航控制器和表視圖

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

?

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


【一步一步學IOS5 】 使用Storyboards創建導航控制器和表視圖

2.場景(Scene) 和聯線(Segues)

?

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

?

聯線(Segue)位于兩個場景之間,管理兩個場景之間的過度,其中Push和Modal是兩個常見的過度類型。

?

3.在Storyboards 中創建導航控制器

?

現在著手創建我們自己的 Storyboards.我們將創建一個簡單的App,其中同時用到UITableView 和 UINavigationController.

?

我們使用表現圖顯示菜單列表。在用戶選擇任何菜單時,App導航到另外一個畫面,顯示更詳細的信息。

?

首先,啟動Xcode,并使用Single View application 模板創建一個新的項目。

?

輸入如下選項:

?

Product Name : RecipeBook

?

Company identifier : com.appcoda

?

Class Prefix : RecipeBook

?

Device Family: : iPhone

?

確保勾選Use Storyboards 選項。

?

選用 Use Automatic Reference Counting

?

點擊繼續保存項目

?

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

?

默認情況下,Xcode 創建一個標準的視圖控制器。我們將使用導航控制器(Navigation Controller)控制畫面的導航。首先更改視圖控制器(View Controller)為導航控制器,選擇Editor菜單 / Embed in 子菜單, 接著選擇Navigation Controller,

?

Xcode 自動嵌入RecipeBook 視圖控制器到導航控制器中,項目的畫面如下圖所示:

?

?


【一步一步學IOS5 】 使用Storyboards創建導航控制器和表視圖

現在我們運行App 看看效果,點擊Run按鈕,你將看到一個空白的視圖,并且添加了一個導航條。這表明你已經成功嵌入了RecipeBook 視圖控制器到導航控制器中。

?


【一步一步學IOS5 】 使用Storyboards創建導航控制器和表視圖

4.添加表視圖及其數據

?

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

?

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

?

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

?

?

#import <UIKit/UIKit.h>

?

@interface RecipeBookViewController : UIViewController < UITableViewDelegate , UITableViewDataSource >

?

@end


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

并填寫初始化方法,接著我們實現先前的兩個協議。完成代碼如下:

@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


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


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

在測試我們的App之前,還有一項工作是為導航條添加一個標題。選擇Recipe Book View Controller 的導航條,選擇Attribute Inspector 窗口輸入Title 屬性。

現在是時候執行你的App了。點擊Run按鈕,并測試App。


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

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

這里,我們不會詳細介紹定制化,簡單在單元格添加Disclosure Indicator.

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

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

現在,再次運行App,運行界面有點不同了。我們已經更改了表視圖樣式為Grouped,并添加了Disclosure indicator 標示符。


【一步一步學IOS5 】 使用Storyboards創建導航控制器和表視圖
?
6.添加詳細視圖控制器

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

當用戶輕拍任一菜單時,會顯示詳細視圖控制器。

OK,現在添加一個新的視圖控制器作為詳細視圖控制器。

【一步一步學IOS5 】 使用Storyboards創建導航控制器和表視圖
?

本例子目的只是演示如何實現導航控制器。我們盡量讓詳細視圖簡單一點,僅添加一個Label顯示菜單名稱。

?

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

?

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

?


【一步一步學IOS5 】 使用Storyboards創建導航控制器和表視圖

?

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

?

之前解釋過,聯線定義了兩個場景之間的過度類型,對于標準的導航,我們使用Push,一旦選擇,Xcode自動使用Push聯線連接兩個場景。

?

現在再次運行App,在你選擇任一菜單時,App將顯示詳細視圖控制器。盡管詳細視圖控制僅僅顯示一個標簽,但是我們已經讓導航功能工作正常了。


【一步一步學IOS5 】 使用Storyboards創建導航控制器和表視圖

?

【一步一步學IOS5 】 使用Storyboards創建導航控制器和表視圖


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

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

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 亚洲韩国精品 | 成人午夜免费在线视频 | 一级黄色毛片 | 手机成人免费视频 | 色综合色综合网色综合 | 久在线视频 | 亚洲欧洲日本在线观看 | 天海翼视频在线 | 国产美女高清片免费观看 | 精品视频一区二区三区四区 | 欧美一区视频 | 欧美18—19sex性hd按摩 | 免费观看国产大片资源视频 | 国产玖玖 | 国产三级在线视频播放线 | 最新国产精品 | 精品福利av导航 | 精品久久久久久久久久久久久久 | 99久久久久久久 | 婷婷qvod| 香蕉视频在线观看免费国产婷婷 | 三级大片在线观看 | 国产羞羞网站 | 色花堂国产精品第一页 | 国产精品一区二区免费 | 麻豆网站入口 | 老色鬼a∨在线视频在线观看 | 亚洲国产二区 | 一区二区三区日 | 在线播放一区二区三区 | 亚洲精品在线视频观看 | 亚洲综合精品成人 | tube69欧美最新片 | 性欧美一级 | 久久精品国产免费 | 欧美国产日韩在线 | 欧美日韩国产三级 | 国产色| 亚洲视频在线观看免费视频 | 婷婷国产成人久久精品激情 | 欧美成人久久 |