zoukankan      html  css  js  c++  java
  • iOS开发UITableView基本使用方法总结1

    UITableView基本使用方法

    1.首先,Controller需要实现两个delegate ,分别是UITableViewDelegate 和UITableViewDataSource

    2.然后 UITableView对象的 delegate要设置为 self。

    3.然后就可以实现这些delegate的一些方法拉。

    (1)- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView;

    这个方法返回 tableview 有多少个section

    1. //返回有多少个Sections  
    2. - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView  
    3. {  
    4. return 1;  
    5. }  

    (2)- (NSInteger)tableView:(UITableView *)table numberOfRowsInSection:(NSInteger)section;

    这个方法返回   对应的section有多少个元素,也就是多少行。

    1. - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section  
    2. {  
    3. return 10;  
    4. }  

    (3)- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath*)indexPath;

    这个方法返回指定的 row 的高度。

    - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section;

    这个方法返回指定的 section的header view 的高度。

    - (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section;

    这个方法返回指定的 section的footer view 的高度。

    1. - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath  
    2. {  
    3. static NSString * showUserInfoCellIdentifier = @"ShowUserInfoCell";  
    4. UITableViewCell * cell = [tableView_ dequeueReusableCellWithIdentifier:showUserInfoCellIdentifier];  
    5. if (cell == nil)  
    6. {  
    7. // Create a cell to display an ingredient.  
    8. cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle  
    9. reuseIdentifier:showUserInfoCellIdentifier]  
    10. autorelease];  
    11. }  
    12.  
    13. // Configure the cell.  
    14. cell.textLabel.text=@"签名";  
    15. cell.detailTextLabel.text = [NSString stringWithCString:userInfo.user_signature.c_str() encoding:NSUTF8StringEncoding];  
    16. }  

    (5)- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section

    返回指定的 section 的header的高度

    1. - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section  
    2. {  
    3. if (section ==0)  
    4. return 80.0f;  
    5. else  
    6. return 30.0f;  
    7. }  

    (6)- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section

    返回指定的section 的 header  的 title,如果这个section header  有返回view,那么title就不起作用了。

    1. - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section  
    2. {  
    3. if (tableView == tableView_)  
    4. {  
    5. if (section == 0)  
    6. {  
    7. return @"title 1";  
    8. }  
    9. else if (section == 1)  
    10. {  
    11. return @"title 2";  
    12. }  
    13. else  
    14. {  
    15. return nil;  
    16. }  
    17. }  
    18. else  
    19. {  
    20. return nil;  
    21. }  
    22. }  

    (7) - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section

    返回指定的 section header 的view,如果没有,这个函数可以不返回view

    1. - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section  
    2. {  
    3. if (section == 0)  
    4. {  
    5.  
    6. UIView* header = [[[NSBundle mainBundle] loadNibNamed: @"SettingHeaderView"  
    7. owner: self  
    8. options: nil] lastObject];  
    9.  
    10. else  
    11. {  
    12. return nil;  
    13. }  
    14. }  

    (8)  - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

    当用户选中某个行的cell的时候,回调用这个。但是首先,必须设置tableview的一个属性为可以select 才行。

    1. TableView.allowsSelection=YES; 
    1. cell.selectionStyle=UITableViewCellSelectionStyleBlue;  

    如果不希望响应select,那么就可以用下面的代码设置属性:

    1. TableView.allowsSelection=NO;  

    下面是响应select 点击函数,根据哪个section,哪个row 自己做出响应就好啦。

    1. - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath  
    2. {  
    3. if (indexPath.section == 1)  
    4. {  
    5. return;  
    6. }  
    7. else if(indexPath.section==0)  
    8. {  
    9. switch (indexPath.row)  
    10. {  
    11. //聊天  
    12. case 0:  
    13. {  
    14. [self onTalkToFriendBtn];  
    15. }  
    16. break;  
    17.  
    18. default:  
    19. break;  
    20. }  
    21. }  
    22. else  
    23. {  
    24. return ;  
    25. }  
    26.  
    27. }  

    如何让cell 能够响应 select,但是选中后的颜色又不发生改变呢,那么就设置

    cell.selectionStyle = UITableViewCellSelectionStyleNone;

    1. - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath  
    2. {  
    3. //cell被选中后的颜色不变  
    4. cell.selectionStyle = UITableViewCellSelectionStyleNone;  
    5. }  

    (9)如何设置tableview  每行之间的分割线

    1. self.tableView.separatorStyle=UITableViewCellSeparatorStyleSingleLine;  

    如果不需要分割线,那么就设置属性为 UITableViewCellSeparatorStyleNone  即可。

    (10)如何设置 tableview cell的背景颜色

    1. - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath  
    2. {  
    3. //设置背景颜色  
    4. cell.contentView.backgroundColor=[UIColor colorWithRed:0.957 green:0.957 blue:0.957 alpha:1];  
    5. }  

    (11) - (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath

    这个函数响应,用户点击cell 右边的 箭头(如果有的话)

    (12)如何设置tableview 可以被编辑

    首先要进入编辑模式:

    1. [TableView setEditing:YES animated:YES];  

    如果要退出编辑模式,肯定就是设置为NO

    - (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath

    返回当前cell  要执行的是哪种编辑,下面的代码是返回删除模式

    1. - (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath  
    2. {  
    3. return UITableViewCellEditingStyleDelete;  
    4. }  

    -(void) tableView:(UITableView *)aTableView

    commitEditingStyle:(UITableViewCellEditingStyle) editingStyle

    forRowAtIndexPath:(NSIndexPath *)indexPath

    通知告诉用户编辑了 哪个cell,对应上面的代码,我们在这个函数里面执行删除cell的操作。

    1. -(void) tableView:(UITableView *)aTableView  
    2. commitEditingStyle:(UITableViewCellEditingStyle) editingStyle  
    3. forRowAtIndexPath:(NSIndexPath *)indexPath  
    4. {  
    5. [chatArray removeObjectAtIndex:indexPath.row];  
    6. [chatTableView reloadData];  
    7. }  

    (13)如何获得 某一行的CELL对象

    - (UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPath;

  • 相关阅读:
    jsp 特殊标签
    poj 1753 Flip Game 高斯消元 异或方程组 求最值
    zoj 3155 Street Lamp 高斯消元 异或方程组 求方案数
    poj1222 EXTENDED LIGHTS OUT 高斯消元解异或方程组 模板
    zoj 3930 Dice Notation 模拟
    zoj 3157 Weapon 线段树求逆序对数
    hdu 1242 Rescue BFS+优先队列
    hdu 3466 Proud Merchants 贪心+01背包
    zoj 3689 Digging 贪心+01背包
    hdu 2602 Bone Collector 01背包模板
  • 原文地址:https://www.cnblogs.com/741162830qq/p/4541805.html
Copyright © 2011-2022 走看看