[iOS]UITableView的基本觀念

  • 8631
  • 0
  • iOS
  • 2013-11-20

[iOS]UITableView的基本觀念

在iOS新建的專案中, 一般Single ViewController會繼承UIViewController

這一篇文章是討論如何在繼承UIViewController類別的ViewController裡面去使用一個UITableView的控制項。

 

1. 如果想要在Single View的畫面中使用UITableView,就必須在.h檔案中實作UITableViewDataSource,UITableViewDelegate 這兩個協定。


@interface ViewController : UIViewController{
}

 

2. 接下來在View畫面裡面拉近一個UITable View Table Cell的控制項。

在畫面中拉近控制項後,你還要為這個UITable View控制項建立IBOutlet。

clip_image003

 

2.1 特別要記得,在UITable Cell的Identifier識別設定要記得命名。

clip_image005

 

3. View相對應到的.h檔案實作協定之後,接著就要在.m的檔案中把在畫面中拖拉view檔案裡面的UItableview控制項中設定delegate與dataSource給自己。

除此之外,UITableView的資料來源是接收一個陣列物件,所以在這個範例中,我在viewDidLoad事件中建立了一個NSArray物件,並且在裡面放了兩筆資料。

clip_image007

 

4. 而在.m檔中,必須要實作下列三個方法。第一個方法是設定Tableview裡面有多少區段。


- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
    // Return the number of sections.
    return 1;
}

這個方法是設定在這個UITableView裡面有幾個區段,區段我們看到下圖。在iPhone設定畫面上,會看到相似的功能被歸相同的群組裡面。這部分就是區段。所以要設定有多少區段,必須從這個方法來設定。

clip_image009

 

4.1 這裡是設定每一個區段有多少筆資料。


- (NSInteger)tableView:(UITableView *)tableView
numberOfRowsInSection:(NSInteger)section{
    return [array count];
}

 

4.2 這個方法是用來Rander畫面上Cell欄位資料。

在這個方法中,在程式中static NSString *CellIdentifier = @"Cell";

這個Cell名稱會對應到步驟2.1時,對UITable Cell的命名,如果兩邊名稱不一樣,會導致你的UITable Cell資料會顯示不出來。


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
 static NSString *CellIdentifier = @"Cell";
 UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil){
        cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }
    
    //Configure the cell.
    //cell.textLabel.text = [self.colorNames objectAtIndex:[indexPath row]];
    cell.textLabel.text = [array objectAtIndex:[indexPath row]];
    return cell;
}

 

5. 執行程式,完成在繼承UIViewController類別的ViewController裡面使用UITableView的控制項。

clip_image011