轉(zhuǎn)載請(qǐng)注明出處:http://blog.csdn.net/qq11231325 UITableView : UIScrollView <NSCoding> 1. 創(chuàng)建一個(gè) UITableView 對(duì)象 ITableView *tableView = [[UITableView alloc]initWithFrame:[[UIScreen mainScreen] bounds] style:UITableViewStylePlain]; 2.separatorColor 分割線顏色 e.g. ableView.separatorColor = [UIColor redColor]; 3.rowHeight 調(diào)整每個(gè) cell 點(diǎn)高度(默認(rèn) 44 ) e.g. tableView.rowHeight = 60; 4.reloadData 刷新數(shù)據(jù) e.g. [tableView reloadData]; 5.<UITableViewDelegate,UITableViewDataSource> 兩個(gè)必須實(shí)現(xiàn)的方法 -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 控制一個(gè) section 中 cell 的多少 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *) indexPath 控制 cell 中的內(nèi)容 6. 選中 cell 時(shí)候使用的方法 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 7. 取消選中時(shí)候用的方法 (不常用) - (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath 8. 控制分區(qū)個(gè)數(shù) - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 9.section 上 Header 顯示的內(nèi)容 - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section 10.section 上 Footer 顯示的內(nèi)容 - (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section 11.section 頂部的高度 - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section 12.cell 的高度 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 13 該方法返回值用于在表格右邊建立一個(gè)浮動(dòng)的索引 - ( NSArray *)sectionIndexTitlesForTableView:( UITableView *)tableView; cell相關(guān): 1.返回表格中指定indexPath對(duì)應(yīng)的cell - ( UITableViewCell *)cellForRowAtIndexPath:( NSIndexPath *)indexPath; 2.返回指定cell的indexPath - ( NSIndexPath *)indexPathForCell:( UITableViewCell *)cell; 3.返回表格中指定點(diǎn)所在的indexPath - ( NSIndexPath *)indexPathForRowAtPoint:( CGPoint )point; 4.返回表格中指定區(qū)域內(nèi)所有indexPath 組成的數(shù)組 - ( NSArray *)indexPathsForRowsInRect:( CGRect )rect; 5.返回表格中所有可見(jiàn)區(qū)域內(nèi)cell的數(shù)組 - ( NSArray *)visibleCells; 6.返回表格中所有可見(jiàn)區(qū)域內(nèi)cell對(duì)應(yīng)indexPath所組成的數(shù)組 - ( NSArray *)indexPathsForVisibleRows; 7.控制該表格滾動(dòng)到指定indexPath對(duì)應(yīng)的cell的頂端 中間 或者下方 - ( void )scrollToRowAtIndexPath:( NSIndexPath *)indexPath atScrollPosition:( UITableViewScrollPosition )scrollPosition animated:( BOOL )animated; 8.控制該表格滾動(dòng)到選中cell的頂端 中間 或者下方 -( void )scrollToNearestSelectedRowAtScrollPosition:( UITableViewScrollPosition )scrollPosition animated:( BOOL )animated; 處理單元格的選中 1.@property ( nonatomic ) BOOL allowsSelection 控制該表格是否允許被選中 2. @property ( nonatomic ) BOOL allowsMultipleSelection 控制該表格是否允許多選 3. @property ( nonatomic ) BOOL allowsSelectionDuringEditing; 控制表格處于編輯狀態(tài)時(shí)是否允許被選中 4. @property ( nonatomic ) BOOL allowsMultipleSelectionDuringEditing 控制表格處于編輯狀態(tài)時(shí)是否允許被多選 5.獲取選中cell對(duì)應(yīng)的indexPath - ( NSIndexPath *)indexPathForSelectedRow; 6.獲取所有被選中的cell對(duì)應(yīng)的indexPath組成的數(shù)組 - ( NSArray *)indexPathsForSelectedRows 7.控制該表格選中指定indexPath對(duì)應(yīng)的表格行,最后一個(gè)參數(shù)控制是否滾動(dòng)到被選中行的頂端 中間 和底部 - ( void )selectRowAtIndexPath:( NSIndexPath *)indexPath animated:( BOOL )animated scrollPosition:( UITableViewScrollPosition )scrollPosition; 8.控制取消選中該表格中指定indexPath對(duì)應(yīng)的表格行 - ( void )deselectRowAtIndexPath:( NSIndexPath *)indexPath animated:( BOOL )animated; <UITableViewDelegate> 9.當(dāng)用戶將要選中表格中的某行時(shí)觸發(fā)方法 - ( NSIndexPath *)tableView:( UITableView *)tableView willSelectRowAtIndexPath:( NSIndexPath *)indexPath; 10.當(dāng)用戶完成選中表格中的某行時(shí)觸發(fā)方法 -( void )tableView:( UITableView *)tableView didSelectRowAtIndexPath:( NSIndexPath *)indexPath 11.當(dāng)用戶將要取消選中表格中某行時(shí)觸發(fā) - ( NSIndexPath *)tableView:( UITableView *)tableView willDeselectRowAtIndexPath:( NSIndexPath *)indexPath 12.當(dāng)用戶完成取消選中表格中某行時(shí)觸發(fā) - ( void )tableView:( UITableView *)tableView didDeselectRowAtIndexPath:( NSIndexPath *)indexPath 關(guān)于對(duì)表格的編輯 1.對(duì)表格控件執(zhí)行多個(gè)連續(xù)的插入,刪除和移動(dòng)操作之前調(diào)用這個(gè)方法開(kāi)始更新 - ( void )beginUpdates; 2.對(duì)表格控件執(zhí)行多個(gè)連續(xù)的插入,刪除和移動(dòng)操作之后調(diào)用這個(gè)方法結(jié)束 - ( void )endUpdates; 3.在一個(gè)或多個(gè)indexPath處插入cell - ( void )insertRowsAtIndexPaths:( NSArray *)indexPaths withRowAnimation:( UITableViewRowAnimation )animation; 4.刪除一個(gè)或多個(gè)indexPath處的cell - ( void )deleteRowsAtIndexPaths:( NSArray *)indexPaths withRowAnimation:( UITableViewRowAnimation )animation; 5.將制定indexPath處的cell移動(dòng)到另個(gè)一indexPath處 - ( void )moveRowAtIndexPath:( NSIndexPath *)indexPath toIndexPath:( NSIndexPath *)newIndexPath 6.指定的indexSet所包含的一個(gè)或多個(gè)分區(qū)號(hào)對(duì)應(yīng)的位置插入分區(qū) - ( void )insertSections:( NSIndexSet *)sections withRowAnimation:( UITableViewRowAnimation )animation; 7.刪除指定indexSet所包含的一個(gè)或多個(gè)分區(qū)號(hào)所對(duì)應(yīng)的分區(qū) - ( void )deleteSections:( NSIndexSet *)sections withRowAnimation:( UITableViewRowAnimation )animation; 8.將指定分區(qū)移動(dòng)到另一個(gè)位置 - ( void )moveSection:( NSInteger )section toSection:( NSInteger )newSection @protocol UITableViewDataSource< NSObject > 9.該方法返回值決定指定indexPath對(duì)應(yīng)的cell是否可以編輯 - ( BOOL )tableView:( UITableView *)tableView canEditRowAtIndexPath:( NSIndexPath *)indexPath; 10.該方法返回值決定指定indexPath對(duì)應(yīng)的cell是否可以移動(dòng) - ( BOOL )tableView:( UITableView *)tableView canMoveRowAtIndexPath:( NSIndexPath *)indexPath; 11.當(dāng)用戶對(duì)指定表格行編輯(包括插入和刪除)時(shí)觸發(fā)該方法 - ( void )tableView:( UITableView *)tableView commitEditingStyle:( UITableViewCellEditingStyle )editingStyle forRowAtIndexPath:( NSIndexPath *)indexPath; 12.該方法觸發(fā)移動(dòng) 通常對(duì)數(shù)據(jù)進(jìn)行處理(重要) - ( void )tableView:( UITableView *)tableView moveRowAtIndexPath:( NSIndexPath *)sourceIndexPath toIndexPath:( NSIndexPath *)destinationIndexPath; @protocol UITableViewDelegate< NSObject , UIScrollViewDelegate > 13.開(kāi)始/完成 編輯時(shí)調(diào)用的兩個(gè)方法 - ( void )tableView:( UITableView *)tableView willBeginEditingRowAtIndexPath:( NSIndexPath *)indexPath; - ( void )tableView:( UITableView *)tableView didEndEditingRowAtIndexPath:( NSIndexPath *)indexPath; 14.該方法返回值決定了 indexPath處的cell 的編輯狀態(tài) 返回值為枚舉類(lèi)型 分別為 None Delete Insert - ( UITableViewCellEditingStyle )tableView:( UITableView *)tableView editingStyleForRowAtIndexPath:( NSIndexPath *)indexPath; 15.該方法決定了 cell處于被編輯狀態(tài)時(shí)是否應(yīng)該縮進(jìn) 若未重寫(xiě) 所有cell處于編輯狀態(tài)時(shí)都會(huì)縮進(jìn) - ( BOOL )tableView:( UITableView *)tableView shouldIndentWhileEditingRowAtIndexPath:( NSIndexPath *)indexPath; UITableViewCell : UIView < NSCoding , UIGestureRecognizerDelegate > 這里涉及到自定義 UITableViewCell 以下為具體步驟以及需要注意到地方 1. 首先創(chuàng)建一個(gè)類(lèi)繼承 UITableViewCell 2. 把自定義 cell 上到自定義視圖全部設(shè)置為屬性(注意:屬性名一定不要和系統(tǒng)屬性命重復(fù) e.g. imageView,textLable,detailTextLable ) 3. 在 cell 的初始化方法中 對(duì)自定義視圖對(duì)屬性初始化,在初始化對(duì)時(shí)候可以不指定 frame (注意,這里加載到視圖上時(shí) 加載到 contentView 上 同時(shí)注意內(nèi)存管理) 4. 在 layoutSubviews 方法中完成最后操作 通常給出 frame (注意,這個(gè)方法為系統(tǒng)自帶方法,當(dāng)一個(gè) cell 顯示到屏幕上之前,最后調(diào)用到一個(gè)方法, 所有 cell 到操作 包括賦值,調(diào)整高度等 都已經(jīng)完成 一定不要忘記 [super layoutSubviews]; ) 附加: 當(dāng)一個(gè) cell 被選中的方法 - (void)setSelected:(BOOL)selected animated:(BOOL)animated 一些小操作: // 將單元格的邊框設(shè)置為圓角 cell. layer . cornerRadius = 12 ; cell. layer . masksToBounds = YES ; |
|
來(lái)自: 嘆落花 > 《UITableVIew》