• 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;

  • 相关阅读:
    HttpWebRequest.GetRequestStream方法timeout的原因及解决办法
    C#随机函数random()典型用法集锦
    windows 2008 开启默认共享
    Window xp命令大全
    大并发处理解决方案
    库特Z配置
    SQL Server 返回了错误 21(设备未就绪。) 解决方法
    C# 执行bat批处理文件
    sql索引从入门到精通(十亿行数据测试报告)
    DataTable使用时的小问题
  • 原文地址:https://www.cnblogs.com/741162830qq/p/4541805.html
Copyright © 2020-2023  润新知