iOS開發基礎-UITableView基本屬性

  設置 UITableView 中 cell 的背景顏色。ide

示例1:經過 backgroundView 設置。spa

1 UIView *view1 = [[UIView alloc] init];
2 view1.backgroundColor = [UIColor blueColor];
3 cell.backgroundView = view1;

示例2:經過 backgroundColor 設置。code

1 cell.backgroundColor = [UIColor blueColor];

   backgroundView 的優先級比 backgroundColor 高,若是同時設置了, backgroundView 會覆蓋 backgroundColor 。對象


 

  設置 cell 選中狀態的背景。blog

1 UIView *view2 = [[UIView alloc] init];
2 view2.backgroundColor = [UIColor redColor];
3 cell.selectedBackgroundView = view2;

  設置 UITableView 的其餘屬性。字符串

1 self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;  //設置分割線樣式
2 self.tableView.separatorColor = [UIColor redColor]; //設置分割線顏色
3 self.tableView.tableHeaderView = [UIButton buttonWithType:UIButtonTypeContactAdd];  //設置頂部視圖
4 self.tableView.tableFooterView = [[UISwitch alloc] init];   //設置底部視圖

  設置 cell 的 accessoryType 屬性。it

   accessoryType 爲枚舉類型,定義以下:table

1 typedef enum : NSInteger {
2    UITableViewCellAccessoryNone,
3    UITableViewCellAccessoryDisclosureIndicator,
4    UITableViewCellAccessoryDetailDisclosureButton,
5    UITableViewCellAccessoryCheckmark,
6    UITableViewCellAccessoryDetailButton 
7 } UITableViewCellAccessoryType;

  也可經過 cell 的 accessoryView 屬性來設置輔助指示視圖,以下:class

1 cell.accessoryView = [UIButton buttonWithType:UIButtonTypeContactAdd];

   cell 的工做原理:在程序執行的時候,能看到多少行,就建立多少條數據。原理

  缺點:若是數據量很是大,用戶在短期內來回滾動,將會建立大量的 cell ,並不重用以前已經建立的 cell ,將一直開闢新的存儲空間。


   cell 的重用原理:當滾動列表時,部分 UITableViewCell 會移出窗口, UITableView 會將窗口外的 UITableViewCell 放入一個對象池中等待重用。當 UITableView 要求 dataSource 返回 UITableViewCell 時, dataSource 會先查看該對象池,若是池中有未使用的 UITableViewCell ,則會用新的數據來配置這個 UITableViewCell ,而後返回給 UITableView ,並從新顯示到窗口中,從而避免建立新對象。所以,若是一個窗口只能顯示5個 cell ,重用以後,只須要建立6個 cell 。

  經過 UITableViewCell 的 reuseIdentifier 屬性,可在初始化的時候傳入一個特定的字符串標識符來設置。當 UITableView 要求 dataSource 返回 UITableViewCell 時,先經過該標識符到對象池中查找對應類型的 UITableViewCell 對象。若是沒有,就傳入這個字符串標識符初始化 UITableViewCell 對象。

 1 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
 2     NSLog(@"%s", __FUNCTION__);
 3     static NSString *identifier = @"hero";  //保存重用的標識符
 4     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];   //先去對象池中查找是否有知足條件的cell
 5     if (cell == nil) {
 6         cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:identifier];
 7         NSLog(@"建立一個新的Cell");
 8     }
 9     // 給cell設置數據
10     
11     return cell;
12 }
相關文章
相關標籤/搜索