UITableView整理

1.UITableView有兩種樣式:字體

[objc] view plaincopy在CODE上查看代碼片派生到個人代碼片動畫

  1. [[UITableView alloc] initWithFrame:view.bounds style:UITableViewStylePlain];  atom

  2. [[UITableView alloc] initWithFrame:view.bounds style:UITableViewStyleGrouped];  spa


2.UITableView的結構:
.net

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

行高可經過rowHeight屬性設置code

[objc] view plaincopy在CODE上查看代碼片派生到個人代碼片orm

  1. _listArray = [[UIFont familyNames] retain];//獲取全部字體名稱  blog

  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 plaincopy在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 plaincopy在CODE上查看代碼片派生到個人代碼片

  1. //總體刷新UITableView  

  2. - (void)reloadData;   

[objc] view plaincopy在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 plaincopy在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 plaincopy在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 plaincopy在CODE上查看代碼片派生到個人代碼片

  1. //設置組頭部的文字  

  2. - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section;   

  3. //設置組尾部的文字  

  4. - (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section;  

[objc] view plaincopy在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 plaincopy在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 plaincopy在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 plaincopy在CODE上查看代碼片派生到個人代碼片

  1. cell.selectionStyle = UITableViewCellSelectionStyleBlue;  

若是想選中後取消,在didSelectRowAtIndexPath方法中調用

[objc] view plaincopy在CODE上查看代碼片派生到個人代碼片

  1. [tableView deselectRowAtIndexPath:indexPath animated:YES];或  

  2. [self performSelector:@selector(deselectRowAtIndexPath:animated:) withObject:indexPath afterDelay:.5];  

若是想在cell的右邊出現選中狀態或箭頭能夠設置下面的屬性

[objc] view plaincopy在CODE上查看代碼片派生到個人代碼片

  1. cell.accessoryType = UITableViewCellAccessoryCheckmark;  

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

[objc] view plaincopy在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 plaincopy在CODE上查看代碼片派生到個人代碼片

  1.     //這樣寫在IOS7.0之後 TableViewCell的分割線就不會往右挫15個像素點了  

  2.    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:SimpleTableIdentifier];  

  3. [tableViewsetSeparatorInset:UIEdgeInsetsMake(0,0,0,0)]; 

相關文章
相關標籤/搜索