iOS學習之Table View的簡單使用

來源:互聯網
上載者:User

Table View簡單描述:

    在iPhone和其他iOS的很多程式中都會看到Table View的出現,除了一般的表格資料展示之外,設定的屬性資料往往也用到Table View,Table View主要分為以下兩種:

 

  •  Plain:這是普通的列表風格
  •  Grouped :這是分塊風格。
 對於UITableView,我們有一些特殊的概念和術語,比如說我們成Table View的一行為Cell,而許多的Cell可以組成Section,每個Section上下又分別有Header和Footer,許多個的Section則組成了整個Table ,當然Table也有Header和Footer,下面看兩種圖就能明白這幾個拗口名詞了::

  現在理論知識瞭解的差不多了。今天先做一個Plain樣式的例子,這樣加強對Table view的熟練使用。 1、建立項目建立一個Single View Application,命名為TableViewDemo,開發環境是:Xcode 4.3,iPhone 5.1模擬器。 2、Table View放上控制項開啟ViewController.xib檔案,往ViewController.xib介面上拖拽一個Table View控制項到現有的View上,對齊。
3、串連新添加的TableView和ViewController。選中新添的TableView控制項,開啟串連檢查器(Connection Inspector), 找到delegate和datasource並點中圓圈拉線串連到左邊File's Owner表徵圖上,為什麼要把這兩個串連File's Owner上呢?這是因為iOS使用的MVC設計模式,View和ViewController之間的對應關係,需要一個橋樑來進行串連的(即,對於一個視圖,他如何知道自己的介面的操作應該由誰來響應),這個橋樑就是File's Owner。
4、開啟ViewController.h,添加協議和Property (類似與java裡的實現介面)
#import <UIKit/UIKit.h>@interface ViewController : UIViewController<UITableViewDelegate, UITableViewDataSource>@property (strong, nonatomic) NSArray *list;@end

5、開啟.m檔案,添加:

@synthesize list = _list;


這是發現有兩個警告,提示未完成的實現,這提示的是UITableViewDelegate, UITableViewDataSource這個兩個標頭檔裡的協議的方法未實現。待會我們去實現它。6、建立資料

- (void)viewDidLoad{    [super viewDidLoad];// Do any additional setup after loading the view, typically from a nib.    NSArray *array = [[NSArray alloc] initWithObjects:@"美國", @"菲律賓",                      @"黃岩島", @"中國", @"泰國", @"越南", @"寮國",                      @"日本" , nil];     self.list = array; }- (void)viewDidUnload{    [super viewDidUnload];    // Release any retained subviews of the main view.    self.list = nil;    }

7、產生row關鍵的步驟來了,實現tableview添加資料來源,返回TableView的行數,返回各行cell執行個體。

- (UITableViewCell *)tableView:(UITableView *)tableView          cellForRowAtIndexPath:(NSIndexPath *)indexPath {         static NSString *TableSampleIdentifier = @"TableSampleIdentifier";         UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:                              TableSampleIdentifier];     if (cell == nil) {         cell = [[UITableViewCell alloc]                 initWithStyle:UITableViewCellStyleDefault                 reuseIdentifier:TableSampleIdentifier];     }         NSUInteger row = [indexPath row];     cell.textLabel.text = [self.list objectAtIndex:row]; return cell; }
上面的第二個方法中,
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier: TableSampleIdentifier];
這個語句根據標識符TableSampleIdentifier尋找當前可以重用的UITableViewCell。當某行滑出當前可見地區後,我們重用它所對應的UITableViewCell對象,那麼就可以節省記憶體和資源。這裡UITableViewCellStyleDefault是表示UITableViewCell風格的常數,除此之外,還有其他風格,後面將會用到。
注意參數(NSIndexPath *)indexPath,它將行號row和部分號section合并了,通過[indexPath row];擷取行號。之後給cell設定其文本:
cell.textLabel.text = [self.list objectAtIndex: row]; 

8、現在一個簡單的TableView就弄好看,運行下看效果、、 9、添加圖片。在項目上add files到項目,提交兩張小圖片,然後在cell返回之前添加如下代碼

NSUInteger row = [indexPath row];     cell.textLabel.text = [self.list objectAtIndex:row];     UIImage *image = [UIImage imageNamed:@"qq"];     cell.imageView.image = image;     UIImage *highLighedImage = [UIImage imageNamed:@"youdao"];     cell.imageView.highlightedImage = highLighedImage;return cell; 

效果如下:  10、設定行的風格表示UITableViewCell風格的常量有:

UITableViewCellStyleDefault
UITableViewCellStyleSubtle
UITableViewCellStyleValue1
UITableViewCellStyleValue2可以自己修改看看效果。可以添加一個detail

 cell.detailTextLabel.text =@"打打打打";

return cell; 

   11、選擇table裡的某一行 在.m檔案@end之前編寫  -(void)table  這時會自動提示可以實現的方法, 我們選擇這個方法

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

選中是做個提示,提示選中了那個資訊,代碼實現如下:

 

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{    NSString *rowString = [self.list objectAtIndex:[indexPath row]];    UIAlertView * alter = [[UIAlertView alloc] initWithTitle:@"選中的行資訊" message:rowString delegate:self cancelButtonTitle:@"確定" otherButtonTitles:nil, nil];    [alter show];}

效果:

 

 

 以上是Plain風格的TableView 例子代碼:http://download.csdn.net/detail/totogo2010/4361870 著作權聲明:本文由http://blog.csdn.net/totogo2010/原創,歡迎轉載分享。請尊重作者勞動,轉載時保留該聲明和作者部落格連結,謝謝!
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.