iOS、swift技术交流!开发中有帮助的iOS文章

创建cell 的 3种方式和cell的一些技巧

2016-01-21  本文已影响2729人  光明程辉

1、自定义cell

// 精确删除一行

 [self.tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];  // 精确删除一行

2、怎么把tableview里cell的小对勾的颜色改成别的颜色?

  _mTableView.tintColor = [UIColor redColor];

==== 常用 封装cell 的方法===

  /**
   *  通过一个继承tableViewcell来创建一个cell
   */
+ (instancetype)cellWithCustonTableViewCell:(UITableView *)tableView;


/**
 *  通过一个继承tableViewcell来创建一个cell
 */
+ (instancetype)cellWithCustonTableViewCell:(UITableView *)tableView
{
static NSString *ID = @"cell";
ODDetailCustonCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];
if (cell == nil) {
    // 从xib中加载cell
    cell = [[[NSBundle mainBundle] loadNibNamed:@"ODDetailCustonCell" owner:nil options:nil] lastObject];
}
return cell;
}

方式一 系统默认的!方法(几乎不用!)

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
  {
      //cell的标示符
      //  以后表格中可能有不同样式的cell, 区分样式的cell
      static NSString *cellID = @"cell";

//获取一个以前用过的cell, 现在没有用
//    相当于从后厨获取一个碗  
  UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellID];
    if(cell == nil) //没碗可取
    {
    //参数 initWithStyle设置风格,共有4种
    //样式: Default,Value1,Value2,Subtitle
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellID] autorelease];
    cell.tag = indexPath.row;
    count++;
}
NSLog(@"row=%d,count=%d,tag=%d",indexPath.row,count,cell.tag);
   //设置cell上显示的数据
cell.textLabel.text = [_dataArray objectAtIndex:indexPath.row];
//设置单元格右边的风格
cell.accessoryType = UITableViewCellAccessoryCheckmark;
 
return cell;
}

方式2: 使用自定义 创建 cell (非常常用)

什么时候注册cell ?

给tableView设置delegate之前注册cell,即self.tableView.delegate = self; 之前

!!!
// 注册cell ---
[self.myTableViwe registerNib:[UINib nibWithNibName:@"RecomListCell" bundle:nil] forCellReuseIdentifier:@"RecomListCell"];

if (cell == nil) {XXXXXX} 方法外 用tag匹配,例如这种方式获取 : UILabel * label = (UILabel *)[cell.contentView viewWithTag:1001];相当对应的 控件!

看完了,上面的代码是不是很容易,但是代码量太多了,而且,很多都是相同的或相似的,所以,就必须,想到封装起来!(额外扩展:我们数据解析时看到有些很相似,那也是想到封装成一个类 或方法!):例如:
结构相似.png

调用时

  -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
     static NSString * cellid = @"cell";

      // 是  TableViewCell 不是之前的系统的 UITableViewCell
      TableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:cellid];
if (cell == nil) {

        // 是  TableViewCell 不是之前的系统的 UITableViewCell
    cell = [[TableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellid];
}

cell.titleLabel.text = @"我是主标题";
cell.subTitleLabel.text = @"我是副标题";
cell.iconImageView.image = [UIImage imageNamed:@"guideHome.png"];


return cell;
}

方式 3: XIB 创建cell (较为常用!)

拖动.png
上一篇下一篇

猜你喜欢

热点阅读