码迷,mamicode.com
首页 > 移动开发 > 详细

iOS UI基础-9.0 UITableView基础

时间:2015-09-16 23:30:08      阅读:323      评论:0      收藏:0      [点我收藏+]

标签:

在iOS中,要实现表格数据展示,最常用的做法就是使用UITableView。UITableView继承自UIScrollView,因此支持垂直滚动,而且性能极佳。

UITableView有两种样式:

  • 一列显示:UITableViewStylePlain
  • 分组显示:UITableViewStyleGrouped

tableView展示数据的过程

 1.调用数据源的下面方法得知一共有多少组数据

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

 2.调用数据源的下面方法得知每一组有多少行数据

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

 3.调用数据源的下面方法得知每一行显示什么内容

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

常见的属性

    // 表格行线条的颜色
    self.tableView.separatorColor = [UIColor colorWithRed:255/255.0 green:255/255.0 blue:0 alpha:255/255.0];
    // 显示表格行线条的样式,UITableViewCellSeparatorStyleNone为没有线条
    self.tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
    
    // 表格的头部控件(直接显示表格的最顶部),一般用来显示广告
    self.tableView.tableHeaderView = [UIButton buttonWithType:UIButtonTypeContactAdd];
    // 表格的底部控件,一般用来加载更多数据
    self.tableView.tableFooterView = [[UISwitch alloc] init];

Cell的重用代码

UITableViewCell有个NSString *reuseIdentifier属性,可以在初始化UITableViewCell的时候传入一个特定的字符串标识来设置reuseIdentifier(一般用UITableViewCell的类名)。当UITableView要求dataSource返回UITableViewCell时,先通过一个字符串标识到对象池中查找对应类型的UITableViewCell对象,如果有,就重用,如果没有,就传入这个字符串标识来初始化一个UITableViewCell对象
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    // 1.定义一个cell的标识。static修饰局部变量:可以保证局部变量只分配一次存储空间(只初始化一次)
      static NSString *ID = @"mjcell";
    
    // 2.从缓存池中取出cell
      UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];
    
    // 3.如果缓存池中没有cell
      if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:ID];
     }
    
    // 4.设置cell的属性...
      return cell;
}

右边索引条

已经有相应的数据源,实现即可

/**
 *  返回右边索引条显示的字符串数据
 */
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView
{
    return [self.groups valueForKeyPath:@"title"];
}

效果:

技术分享

 刷新

    // 全部刷新
     [self.tableView reloadData];
    
    // 局部刷新,row指的是第几行,inSection指的是第几组
    NSIndexPath *path = [NSIndexPath indexPathForRow:row inSection:0];
    [self.tableView reloadRowsAtIndexPaths:@[path] withRowAnimation:UITableViewRowAnimationBottom];

 

iOS UI基础-9.0 UITableView基础

标签:

原文地址:http://www.cnblogs.com/jys509/p/4813394.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!