tableView 的一些常用屬性,方法

1.UITableView有兩種樣式:

[objc] view plain copy
 在CODE上查看代碼片派生到我的代碼片
  1. [[UITableView alloc] initWithFrame:view.bounds style:UITableViewStylePlain];  
  2. [[UITableView alloc] initWithFrame:view.bounds style:UITableViewStyleGrouped];  

2.UITableView的結構:

UITableView由頭部,尾部,和中間一連串的單元格組成,UITableView的頭部由tableHeaderView屬性設置,尾部由tableFooterView屬性設置,中間的

行高可通過rowHeight屬性設置

[objc] view plain copy
 在CODE上查看代碼片派生到我的代碼片
  1. _listArray = [[UIFont familyNames] retain];//獲取所有字體名稱  
  2.   
  3. _tableView = [[UITableView alloc] initWithFrame:view.bounds style:UITableViewStylePlain];  
  4. // 設置數據源  
  5. _tableView.dataSource = self;  
  6. // 設置代理  
  7. _tableView.delegate = self;  
  8. // 設置表視圖cell的高度,統一的高度  
  9. _tableView.rowHeight = 70;    // 默認44px  
  10. // 設置表視圖的背景  
  11. UIImageView *backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"IMG_0410"]];  
  12. _tableView.backgroundView = backgroundView;  
  13. [backgroundView release];  
  14. // 設置表視圖的顏色  
  15.   _tableView.backgroundColor = [UIColor yellowColor];  
  16. // 設置表視圖的分割線的顏色  
  17.   _tableView.separatorColor = [UIColor purpleColor];  
  18. // 設置表視圖的分割線的風格  
  19. _tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;  
  20. // 設置表視圖的頭部視圖(headView 添加子視圖)  
  21. UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0032080)];  
  22. headerView.backgroundColor = [UIColor redColor];  
  23. // 添加子視圖  
  24. UILabel *headText = [[UILabel alloc] initWithFrame:CGRectMake(60020080)];  
  25. headText.text = @"天晴朗,天晴朗天晴朗天晴朗!";  
  26. headText.numberOfLines = 0;  
  27. [headerView addSubview:headText];  
  28. [headText release];  
  29. _tableView.tableHeaderView = headerView; //設置頭部  
  30. [headerView release];  
  31. // 設置表視圖的尾部視圖(footerView 添加子視圖)      
  32. UIView *footerView = [[UIView alloc] initWithFrame:CGRectMake(0032080)];  
  33. footerView.backgroundColor = [UIColor yellowColor];  
  34. _tableView.tableFooterView = footerView;  //設置尾部  
  35. [footerView release];  

UITableView的一些常用屬性

[objc] view plain copy
 在CODE上查看代碼片派生到我的代碼片
  1. //設置UITableView分割線風格  
  2. @property(nonatomic) UITableViewCellSeparatorStyle separatorStyle;   
  3. //設置UITableView分割線顏色,默認爲標準灰色  
  4. @property(nonatomic,retain) UIColor               *separatorColor;    
  5. //設置UITableView的頭部  
  6. @property(nonatomic,retainUIView *tableHeaderView;   
  7. //設置UITableView的尾部  
  8. @property(nonatomic,retainUIView *tableFooterView;   
  9. //設置UITableView的Cell的高度  
  10. @property (nonatomic)          CGFloat                     rowHeight;  
  11. //設置UITableView種section的頭部的高度  
  12. @property (nonatomic)          CGFloat                     sectionHeaderHeight;  
  13. //設置UITableView種section的尾部的高度  
  14. @property (nonatomic)          CGFloat                     sectionFooterHeight;  
  15. //設置UITableView的背景  
  16. @property(nonatomicreadwriteretainUIView *backgroundView NS_AVAILABLE_IOS(3_2);  
  17. //設置UITableView是否可編輯,默認爲no,不可編輯  
  18. @property(nonatomic,getter=isEditing) BOOL editing;   
  19. - (void)setEditing:(BOOL)editing animated:(BOOL)animated;//方法帶有動畫效果  
  20. //當UITableView不在編輯時,cell是否可以選中,默認爲yes  
  21. @property(nonatomicBOOL allowsSelection NS_AVAILABLE_IOS(3_0);    
  22. //當UITableView在編輯時,cell是否可以選中,默認爲no  
  23. @property(nonatomicBOOL allowsSelectionDuringEditing;      
  24. //當UITableView不在編輯時,cell是否可以選中多個,默認爲no                                  
  25. @property(nonatomicBOOL allowsMultipleSelection NS_AVAILABLE_IOS(5_0);    
  26. //當UITableView在編輯時,cell是否可以選中多個,默認爲no  
  27. @property(nonatomicBOOL allowsMultipleSelectionDuringEditing NS_AVAILABLE_IOS(5_0);   

UITableView的一些常用方法:

[objc] view plain copy
 在CODE上查看代碼片派生到我的代碼片
  1. //整體刷新UITableView  
  2. - (void)reloadData;   

[objc] view plain copy
 在CODE上查看代碼片派生到我的代碼片
  1. //指定一個cell,返回一個NSIndexPath,如果cell沒有,返回nil  
  2. - (NSIndexPath *)indexPathForCell:(UITableViewCell *)cell;   
  3. //指定一個範圍,返回一組NSIndexPath,如果rect無效,返回nil  
  4. - (NSArray *)indexPathsForRowsInRect:(CGRect)rect;   
  5. //指定一個NSIndexPath,返回一個cell  
  6. - (UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPath;   
  7. //返回所有顯示的cell  
  8. - (NSArray *)visibleCells;  
  9. //返回所有顯示的cell的NSIndexPath  
  10. - (NSArray *)indexPathsForVisibleRows;  


UITableView的一些編輯方法:
[objc] view plain copy
 在CODE上查看代碼片派生到我的代碼片
  1. //插入一個cell到指定的indexPaths位置,指定一個動畫效果  
  2. - (void)insertRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation;  
  3. //刪除indexPaths位置的cell,指定一個動畫效果  
  4. - (void)deleteRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation;  
  5. //刷新indexPaths位置的cell,指定一個動畫效果(tableView的局部刷新,一般用於cell的位置不改變,又不想刷新整個tableView時)  
  6. - (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation NS_AVAILABLE_IOS(3_0);  
  7. //移動indexPaths位置的cell,指定一個動畫效果  
  8. - (void)moveRowAtIndexPath:(NSIndexPath *)indexPath toIndexPath:(NSIndexPath *)newIndexPath NS_AVAILABLE_IOS(5_0);  
UITableView數據源方法

[objc] view plain copy
 在CODE上查看代碼片派生到我的代碼片
  1. //UITableView有多少個組  
  2. - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{  
  3.     return 1;//默認爲1  
  4. }  
  5. //UITableView每組有多少條數據  
  6. - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section;  
  7. {  
  8.     return [_listArray count];  
  9. }   
  10.   
  11. //創建一個cell  
  12. - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath  
  13. {  
  14.     static NSString *cellIdentifier = @"cell";  
  15.     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];  
  16.     if (cell == nil) {  
  17.         cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier] autorelease];  
  18.     //cell的四種樣式  
  19.     //UITableViewCellStyleDefault,       只顯示圖片和標題  
  20.        //UITableViewCellStyleValue1,        顯示圖片,標題和子標題(子標題在右邊)  
  21.        //UITableViewCellStyleValue2,        標題和子標題  
  22.        //UITableViewCellStyleSubtitle       顯示圖片,標題和子標題(子標題在下邊)  
  23.   
  24.     }  
  25.     // 指向其中一行  
  26. //    cell.textLabel.text = [self.listArray objectAtIndex:indexPath.row];//設置cell的標題  
  27.     cell.textLabel.textColor = [UIColor redColor];//設置標題字體顏色  
  28.     cell.textLabel.font = [UIFont fontWithName:fontName size:18];//設置標題字體大小  
  29.     cell.imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@""]];//設置cell的圖片  
  30.     cell.detailTextLabel = @"detailTextLabel"// 設置cell的子標題  
  31.     return cell;  
  32.       
  33. }   
[objc] view plain copy
 在CODE上查看代碼片派生到我的代碼片
  1. //設置組頭部的文字  
  2. - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section;   
  3. //設置組尾部的文字  
  4. - (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section;  
[objc] view plain copy
 在CODE上查看代碼片派生到我的代碼片
  1. //指定cell是否可編輯  
  2. - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath;  
  3. //指定cell是否可移動  
  4. - (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath;  
  5. //提交編輯操作,重寫此方法,自動實現cell左滑動刪除功能  
  6. - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath;  
  7. // 移動cell  
  8. - (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath;  

[objc] view plain copy
 在CODE上查看代碼片派生到我的代碼片
  1. //右邊索引顯示的內容  
  2. - (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView  
  3. {  
  4.     return _keyArray;  
  5. }   
  6. // 點擊右邊索引跳轉到哪個index位置  
  7. - (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index  
  8. {  
  9.     return index;  
  10. }   

UITalbeView常用的代理方法

[objc] view plain copy
 在CODE上查看代碼片派生到我的代碼片
  1. //cell的行高  
  2. - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;  
  3. //組頭部的高度  
  4. - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section;  
  5. //組尾部的高度  
  6. - (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section;  
  7. //自定義組頭部視圖,此方法和數據源中設置頭部標題的方法只能實現一個  
  8. - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section;   // custom view for header. will be adjusted to default or specified header height  
  9. //自定義組尾部視圖,此方法和數據源中設置尾部標題的方法只能實現一個  
  10. - (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section;    
  11. //點擊cell時調用  
  12. - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath;  
  13. //取消點擊cell時調用  
  14. - (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath NS_AVAILABLE_IOS(3_0);  

UITableViewCell的一些輔助功能

//sell的選中樣式

[objc] view plain copy
 在CODE上查看代碼片派生到我的代碼片
  1. cell.selectionStyle = UITableViewCellSelectionStyleBlue;  

如果想選中後取消,在didSelectRowAtIndexPath方法中調用

[objc] view plain copy
 在CODE上查看代碼片派生到我的代碼片
  1. [tableView deselectRowAtIndexPath:indexPath animated:YES];或  
  2. [self performSelector:@selector(deselectRowAtIndexPath:animated:) withObject:indexPath afterDelay:.5];  

如果想在cell的右邊出現選中狀態或箭頭可以設置下面的屬性

[objc] view plain copy
 在CODE上查看代碼片派生到我的代碼片
  1. cell.accessoryType = UITableViewCellAccessoryCheckmark;  

cell根據文字的多少自適應高度

[objc] view plain copy
 在CODE上查看代碼片派生到我的代碼片
  1. - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath  
  2. {  
  3.     // wrong  UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];  
  4.     NSString *text = [_listArray objectAtIndex:indexPath.row];  
  5.     //320爲文字顯示的寬度,高度1000是隨便寫的,會自動根據文字的大小和寬度計算出高度  
  6.     CGSize size = [text sizeWithFont:[UIFont systemFontOfSize:14] constrainedToSize:CGSizeMake(3201000)];  
  7.     // +20是爲了讓每個cell之間有些間隔  
  8.     return size.height+20;  
  9. }  

[objc] view plain copy
 在CODE上查看代碼片派生到我的代碼片
  1.     //這樣寫在IOS7.0以後 TableViewCell的分割線就不會往右挫15個像素點了  
  2.    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:SimpleTableIdentifier];  
  3. [tableViewsetSeparatorInset:UIEdgeInsetsMake(0,0,0,0)];  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章