設置 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 }