//聯(lián)系人:石虎QQ: 1224614774昵稱:嗡嘛呢叭咪哄
實(shí)現(xiàn)代理三部曲:
一:遵守代理
二:把tableView.delegate = self
三:實(shí)現(xiàn)代理方法
- (void)viewDidLoad {
[superviewDidLoad];
self.view.backgroundColor= [UIColorwhiteColor];
[self.viewaddSubview:self.tableView];
}
#pragma mark - getter/setter
- (UITableView*)tableView {
if(!_tableView) {
_tableView=[[UITableViewalloc]initWithFrame:self.view.framestyle:UITableViewStyleGrouped];
_tableView.backgroundColor=RGB(239,239,239);
_tableView.showsVerticalScrollIndicator=NO;
_tableView.showsHorizontalScrollIndicator=NO;
_tableView.delegate=self;
_tableView.dataSource=self;
//分割線顏色
_tableView.separatorStyle=UITableViewCellSeparatorStyleNone;
分割線顏色
}
return_tableView;
}
************ UITableView 方法 ************
//多少組
-(NSInteger)numberOfSectionsInTableView:(UITableView*)tableView{
return6;
}
//多少行
-(NSInteger)tableView:(UITableView*)tableView numberOfRowsInSection:(NSInteger)section{
NSArray*arr = [dicobjectForKey:[dic.allKeysobjectAtIndex:section]];
return10;
}
//每行顯示什么內(nèi)容
-(UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath{
staticNSString*cellId =@"CELLID";
UITableViewCell*cell = [tableViewdequeueReusableCellWithIdentifier:cellId];
if(!cell) {
cell? = [[UITableViewCellalloc]initWithStyle:UITableViewCellStyleValue1reuseIdentifier:cellId];
}
returncell;
}
//組頭名字
-(NSString*)tableView:(UITableView*)tableView titleForHeaderInSection:(NSInteger)section{
return@"石虎";
}
//點(diǎn)擊選中
-(void)tableView:(UITableView*)tableView didSelectRowAtIndexPath:(NSIndexPath*)indexPath{
//跳轉(zhuǎn)到二級界面
SHMessageViewController*mess = [[SHMessageViewControlleralloc]init];
//跳轉(zhuǎn)
[selfpresentViewController:messanimated:YEScompletion:nil];
}
取消選中時(shí)候用的方法(不常用)
- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath
//控制分區(qū)個(gè)數(shù)
- (NSInteger)numberOfSectionsInTableView:(UITableView*)tableView
{
return2;
}
//section上Header顯示的內(nèi)容
- (NSString*)tableView:(UITableView*)tableView titleForHeaderInSection:(NSInteger)section
{
return@"section上Header顯示的內(nèi)容";
}
//section上Footer顯示的內(nèi)容
- (NSString*)tableView:(UITableView*)tableView titleForFooterInSection:(NSInteger)section
{
return@"section上Footer顯示的內(nèi)容";
}
//section頂部的高度
- (CGFloat)tableView:(UITableView*)tableView heightForHeaderInSection:(NSInteger)section
{
return20;
}
//cell的高度
- (CGFloat)tableView:(UITableView*)tableView heightForRowAtIndexPath:(NSIndexPath*)indexPath
{
return50;
}
//該方法返回值用于在表格右邊建立一個(gè)浮動的索引
- (NSArray*)sectionIndexTitlesForTableView:(UITableView*)tableView
{
return[NSArrayarray];
}
//當(dāng)用戶將要選中表格中的某行時(shí)觸發(fā)方法
- (NSIndexPath*)tableView:(UITableView*)tableView willSelectRowAtIndexPath:(NSIndexPath*)indexPath;
//當(dāng)用戶完成選中表格中的某行時(shí)觸發(fā)方法
-(void)tableView:( UITableView *)tableView didSelectRowAtIndexPath:( NSIndexPath *)indexPath
//當(dāng)用戶將要取消選中表格中某行時(shí)觸發(fā)
- ( NSIndexPath *)tableView:( UITableView *)tableView willDeselectRowAtIndexPath:( NSIndexPath *)indexPath
//當(dāng)用戶完成取消選中表格中某行時(shí)觸發(fā)
- (void)tableView:( UITableView *)tableView didDeselectRowAtIndexPath:( NSIndexPath *)indexPath
************ UITableViewCell方法************
0.當(dāng)一個(gè)cell被選中的方法
- (void)setSelected:(BOOL)selected animated:(BOOL)animated
1.返回表格中指定indexPath對應(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.返回表格中所有可見區(qū)域內(nèi)cell的數(shù)組
- ( NSArray *)visibleCells;
6.返回表格中所有可見區(qū)域內(nèi)cell對應(yīng)indexPath所組成的數(shù)組
- ( NSArray *)indexPathsForVisibleRows;
7.控制該表格滾動到指定indexPath對應(yīng)的cell的頂端中間或者下方
- ( void )scrollToRowAtIndexPath:( NSIndexPath *)indexPath atScrollPosition:( UITableViewScrollPosition )scrollPosition animated:( BOOL )animated;
8.控制該表格滾動到選中cell的頂端中間或者下方
-( void )scrollToNearestSelectedRowAtScrollPosition:( UITableViewScrollPosition )scrollPosition animated:( BOOL )animated;
************單元格的選中--屬性************
0.獲取選中cell對應(yīng)的indexPath
- ( NSIndexPath *)indexPathForSelectedRow;
1.控制該表格是否允許被選中
@property ( nonatomic ) BOOL allowsSelection
2.控制該表格是否允許多選
@property ( nonatomic ) BOOL allowsMultipleSelection
3.控制表格處于編輯狀態(tài)時(shí)是否允許被選中
@property ( nonatomic ) BOOL allowsSelectionDuringEditing;
4.控制表格處于編輯狀態(tài)時(shí)是否允許被多選
@property ( nonatomic ) BOOL allowsMultipleSelectionDuringEditing
5.獲取所有被選中的cell對應(yīng)的indexPath組成的數(shù)組
- ( NSArray *)indexPathsForSelectedRows
7.控制該表格選中指定indexPath對應(yīng)的表格行,最后一個(gè)參數(shù)控制是否滾動到被選中行的頂端中間和底部
- ( void )selectRowAtIndexPath:( NSIndexPath *)indexPath animated:( BOOL )animated scrollPosition:( UITableViewScrollPosition )scrollPosition;
8.控制取消選中該表格中指定indexPath對應(yīng)的表格行
- ( void )deselectRowAtIndexPath:( NSIndexPath *)indexPath animated:( BOOL )animated;
************關(guān)于對表格的編輯方法************
1.對表格控件執(zhí)行多個(gè)連續(xù)的插入,刪除和移動操作之后調(diào)用這個(gè)方法結(jié)束
- ( void )endUpdates;
2.對表格控件執(zhí)行多個(gè)連續(xù)的插入,刪除和移動操作之前調(diào)用這個(gè)方法開始更新
- ( void )beginUpdates;
3.刪除一個(gè)或多個(gè)indexPath處的cell
- ( void )deleteRowsAtIndexPaths:( NSArray *)indexPaths withRowAnimation:( UITableViewRowAnimation )animation;
4.在一個(gè)或多個(gè)indexPath處插入cell
- ( void )insertRowsAtIndexPaths:( NSArray *)indexPaths withRowAnimation:( UITableViewRowAnimation )animation;
5.將制定indexPath處的cell移動到另個(gè)一indexPath處
- ( void )moveRowAtIndexPath:( NSIndexPath *)indexPath toIndexPath:( NSIndexPath *)newIndexPath
6.將指定分區(qū)移動到另一個(gè)位置
- ( void )moveSection:( NSInteger )section toSection:( NSInteger )newSection
7.刪除指定indexSet所包含的一個(gè)或多個(gè)分區(qū)號所對應(yīng)的分區(qū)
- ( void )deleteSections:( NSIndexSet *)sections withRowAnimation:( UITableViewRowAnimation )animation;
8.指定的indexSet所包含的一個(gè)或多個(gè)分區(qū)號對應(yīng)的位置插入分區(qū)
- ( void )insertSections:( NSIndexSet *)sections withRowAnimation:( UITableViewRowAnimation )animation;
9.當(dāng)用戶對指定表格行編輯(包括插入和刪除)時(shí)觸發(fā)該方法
- ( void )tableView:( UITableView *)tableView commitEditingStyle:( UITableViewCellEditingStyle )editingStyle forRowAtIndexPath:( NSIndexPath *)indexPath;
10.該方法返回值決定指定indexPath對應(yīng)的cell是否可以編輯
- ( BOOL )tableView:( UITableView *)tableView canEditRowAtIndexPath:( NSIndexPath *)indexPath;
11.該方法返回值決定指定indexPath對應(yīng)的cell是否可以移動
- ( BOOL )tableView:( UITableView *)tableView canMoveRowAtIndexPath:( NSIndexPath *)indexPath;
12.開始/完成編輯時(shí)調(diào)用的兩個(gè)方法
- ( void )tableView:( UITableView *)tableView willBeginEditingRowAtIndexPath:( NSIndexPath *)indexPath;
- ( void )tableView:( UITableView *)tableView didEndEditingRowAtIndexPath:( NSIndexPath *)indexPath;
13.該方法返回值決定了indexPath處的cell的編輯狀態(tài)返回值為枚舉類型分別為None Delete Insert
- ( UITableViewCellEditingStyle )tableView:( UITableView *)tableView editingStyleForRowAtIndexPath:( NSIndexPath *)indexPath;
14.該方法決定了cell處于被編輯狀態(tài)時(shí)是否應(yīng)該縮進(jìn)若未重寫所有cell處于編輯狀態(tài)時(shí)都會縮進(jìn)
- ( BOOL )tableView:( UITableView *)tableView shouldIndentWhileEditingRowAtIndexPath:( NSIndexPath *)indexPath;
15.該方法觸發(fā)移動通常對數(shù)據(jù)進(jìn)行處理(重要)
- ( void )tableView:( UITableView *)tableView moveRowAtIndexPath:( NSIndexPath *)sourceIndexPath toIndexPath:( NSIndexPath *)destinationIndexPath;