首先,在iPhone App中的表視圖是什么?
?
表視圖(Table View) 是IOS Apps 中一個通用的UI元素。很多應用程序在一定程度上,都有使用表視圖來顯示數據列表。最好的例子是內置的iPhone應用程序。你的聯系人顯示在表視圖中。另外一個例子是Mail應用程序,它使用表視圖顯示你的郵箱和郵件。不僅可以用來顯示文本數據,表視圖也可以呈現圖像數據。內置的Video和YouT ube應用程序是這一用法的例子
?
1.創建simpleTable 項目
?
啟動Xcode, 創建一個Single View application 的新項目
?
輸入Xcode項目所有必須的選項:
Product Name: SimpleTable
?
Company Identifier: com.appcode
?
Class Prefix: SimpleTable
?
Device Family: iPhone
?
Use Storyboards:[不選擇]
?
Use Automatic Reference Counting:[選擇]
?
Include Unit Test:[不選擇]
?
?
2.設計視圖
?
首先,我們將創建用戶界面,并添加表視圖。選擇SimpleTableViewController.xib文件,切換到Interface Builder界面。
?
在對象庫(Object Library)中,選擇Table View對象,并拖拽到視圖中。
?
?
3.第一次運行你的應用程序
在繼續之前,嘗試使用模擬器運行你的應用程序。點擊Run按鍵構建你的App并進行測試。
?
模擬器屏幕如下圖所示:
?
?
我們已經設計好了表視圖,但是,現在它沒有包含任何數據。接著,我們將編寫代碼,添加表數據。
?
4.添加表數據
?
返回項目導航欄,選擇SimpleTableViewController.h 文件。 在UIViewController 之后,添加<UITableViewDelegate,UITableViewDataSource>。完成后代碼如下所示:
?
?
#import <UIKit/UIKit.h>
?
@interface SimpleTableViewController : UIViewController < UITableViewDelegate , UITableViewDataSource >
?
@end
?
?
在Object-C中,UITableViewDelegate和UITableViewDataSource稱為協議。基本上,為了在表視圖中顯示數據,我們必須遵守定義在協議中的要求,并實現所有要求的方法。
?
UITableViewDelegate 和 UITableViewDataSource
?
UITableView 是表視圖幕后的實際類,用來靈活處理不同的數據類型。你可以顯示國家列表或者聯系人姓名。或者像本示例一樣,我們將使用表視圖程序菜譜列表。因此,你可以告訴UITableView需求顯示的數據列表呢?
?
UITableViewDataSource 是答案,它用來連接你的數據和表視圖。
?
UITableViewDataSource 協議定義了2個要求實現的的方法
?
(tableView:cellForRowAtIndexPath 和 tableView:numberOfRowsInSection)。通過實現這些方法,你告訴表視圖顯示多少行數據和每一行數據。
?
UITableViewDelegate 負責處理UITableView的表現。協議中可選方法讓你管理表行的高度,配置節點頭部和底部,對表單元重新排序等等。
?
接著,選擇SimpleTableViewController.m 文件,定義一個實例變量,存放數據。
?
@implementation SimpleTableViewController
{
NSArray * tableData;
}
?
在viewDidLoad方法中(Called after the controller's view is loaded into memory - 在控制器的視圖裝載到內存中完成之后,調用該方法),添加如下代碼實例化 tableData 數組。我們初始化數組位菜譜離列表:
?
- ( void )viewDidLoad
{
? ? [ super viewDidLoad ];
? ? //Initialize table data
? ? tableData = [ 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 ];
}
?
在Object-C中,NSArray 是創建和管理數組的類,你可以使用NSArray創建靜態數組,其容量是固定的。如果你需要創建動態數組,則使用NSMutableArray代替。
?
NSArray提供了一組工廠方式來創建數組對象。在我們的代碼中,我們使用arrayWithObjects來實例化一個NSArray對象,并預先填充特定的元素(如Hamburger)。
?
最后,我們需要添加2個數據源方法:tableView:numberOfRowInSection 和 tableView:cellForRowAtIndexPath。這兩個方法是UITableViewDataSource協議的一部分。在配置UITableView時,需要強制實現這兩個方法。
?
第一個方法用來通知表視圖選擇了多少條數據行,因此添加如下代碼。count方法簡單返回tableData數組中元素個數。
?
- ( NSInteger )tableView:( UITableView *)tableView numberOfRowsInSection:( NSInteger )section
{
? ? return [ tableData count ];
}
?
接著,我們實現另外一個需要實現的方法:
?
- ( UITableViewCell *)tableView:( UITableView *)tableView cellForRowAtIndexPath:( NSIndexPath *)indexPath
{
? ? static NSString *simpleTableIdentifier = @"simpleTableItem" ;
? ? UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier :simpleTableIdentifier];
?
? ? if (cell == nil ) {
? ? ? ? cell = [[ UITableViewCell alloc ] initWithStyle : UITableViewCellStyleDefault reuseIdentifier :simpleTableIdentifier];
? ? }
?
cell. textLabel . text = [ tableData objectAtIndex :indexPath. row ];
return cell;
}
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

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