温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

iOS开发那些事--自定义单元格实现

发布时间:2020-07-29 02:49:19 阅读:610 作者:tony关东升 栏目:移动开发
开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

自定义单元格

当苹果公司提供给的单元格样式不能我们的业务需求的时候,我们需要自定义单元格。在iOS 5之前,自定义单元格可以有两种实现方式:代码实现和用xib技术实现。用xib技术实现相对比较简单,创建一个xib文件,然后定义一个继承 UITableViewCell类单元格类即可。在iOS 5之后我们又有了新的选择,故事板实现方式,这种方式比xib方式更简单一些。

我们把简单表视图案例的原型图修改一下,这种情况下四种内置的单元格样式就不合适了。

  iOS开发那些事--自定义单元格实现

    采用“Single View Application”工程模版创建一个名为“CustomCell”的工程,Table View属性的“Prototype Cells”项目设为1(除此之外其它的操作过程与上同)。

 iOS开发那些事--自定义单元格实现

设计画面中上部会有一个单元格设计画面,我们可以在这个位置进行单元格布局的设计。从对象库拖拽一个Label和Image View到单元格设计画面,调整好它们的位置。

 iOS开发那些事--自定义单元格实现

创建自定义单元格类CustomCell, 选择UITableViewCell为父类

 iOS开发那些事--自定义单元格实现

再 回到IB设计画面,在IB中左边选择“Table View Controller Scene” → “Table View Controller” → “Table View” → “Table View Cell”,打开单元格的标识检查器,在Class的选项中选择CustomCell类。

 iOS开发那些事--自定义单元格实现

为Lable和ImageView控件连接输出口

 iOS开发那些事--自定义单元格实现

本案例的代码如下:

//  //  CustomCell.h  //  CustomCell  #import <UIKit/UIKit.h>  @interface CustomCell : UITableViewCell  @property (weak, nonatomic) IBOutlet UILabel *name;  @property (weak, nonatomic) IBOutlet UIImageView *p_w_picpath;  @end  //  //  CustomCell.m  //  CustomCell  #import “CustomCell.h”  @implementation CustomCell  @end 

CustomCell类的代码比较简单,在有些业务中还需要定义动作。

修改视图控制器ViewController.m中的tableView: cellForRowAtIndexPath:方法,代码如下:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath  {  static NSString *CellIdentifier = @”Cell”;  CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];      if (cell == nil) {          cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];      }  NSUInteger row = [indexPath row];  NSDictionary *rowDict = [self.listTeams objectAtIndex:row];  cell.name.text =  [rowDict objectForKey:@"name"];  cell.p_w_picpath.p_w_picpath = [UIImage p_w_picpathNamed:[rowDict objectForKey:@"p_w_picpath"]];  NSUInteger row = [indexPath row];  NSDictionary *rowDict = [self.listFilterTeams objectAtIndex:row];  cell.textLabel.text =  [rowDict objectForKey:@"name"];  NSString *p_w_picpathPath = [rowDict objectForKey:@"p_w_picpath"];  p_w_picpathPath = [p_w_picpathPath stringByAppendingString:@".png"];  cell.p_w_picpath.p_w_picpath = [UIImage p_w_picpathNamed:p_w_picpathPath];  cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;  return cell;  } 

我们看到if (cell == nil){}代码被移除,这是因为我们在IB中已经将重用标识设定为Cell了。 方法中的其它代码与简单表一致,此处不再赘述。运行一下。

iOS开发那些事--自定义单元格实现

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI

开发者交流群×