[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。
2.1 特別要記得,在UITable Cell的Identifier識別設定要記得命名。
3. 在View相對應到的.h檔案實作協定之後,接著就要在.m的檔案中把在畫面中拖拉view檔案裡面的UItableview控制項中設定delegate與dataSource給自己。
除此之外,UITableView的資料來源是接收一個陣列物件,所以在這個範例中,我在viewDidLoad事件中建立了一個NSArray物件,並且在裡面放了兩筆資料。
4. 而在.m檔中,必須要實作下列三個方法。第一個方法是設定Tableview裡面有多少區段。
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
// Return the number of sections.
return 1;
}
這個方法是設定在這個UITableView裡面有幾個區段,區段我們看到下圖。在iPhone設定畫面上,會看到相似的功能被歸相同的群組裡面。這部分就是區段。所以要設定有多少區段,必須從這個方法來設定。
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的控制項。