之前发表过一篇博客“IOS开发之新浪围脖”,在编写代码的时候太偏重功能的实现了,写完基本功能后看着代码有些别扭,特别是用到的四种cell的类,重复代码有点多,所以今天花点时间把代码重构一下。为了减少代码的重复编写把cell中相同的部分抽象成父类,然后继承。不过也是结合着storyboard做的。在优化时转发的View和评论的View相似,于是就做了个重用。在原来的代码上就把cell的代码进行了重写,所以本篇作为补充,关键代码还得看之前的博客。
1.第一种cell,只有微博内容,没有图片,效果如下:
cell对应的代码如下:
TextTableViewCell.h
1 2 3 4 5 6 7 8 9 10 11 12 |
#import 2 //TableView要回调的block,用于把cell中的按钮的tag传给TableView typedef void (^MyCellBlock) (UITableViewCell * cell, int tag); @interface TextTableViewCell : UITableViewCell //接收block块 -(void)setMyCellBlock:(MyCellBlock) block; //接收字典 -(void) setDic:(NSDictionary *)dic; @end |
TextTableViewCell.m(带图片的cell继承于这个cell)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
#import "TextTableViewCell.h" @interface TextTableViewCell() @property (strong, nonatomic) IBOutlet UIImageView *headImage; @property (strong, nonatomic) IBOutlet UILabel *nameLabel; @property (strong, nonatomic) IBOutlet UILabel *dateLabel; @property (strong, nonatomic) IBOutlet UILabel *weiboTextLabel; @property (strong, nonatomic) NSDictionary *dic; @property (strong, nonatomic) MyCellBlock block; @end @implementation TextTableViewCell //获取传入的block块 -(void)setMyCellBlock:(MyCellBlock)block { self.block = block; } //获取传入的参数,用于给我们的cell中的标签赋值 -(void) setDic:(NSDictionary *)dic { //设置头像 [self.headImage setImageWithURL:[NSURL URLWithString:dic[@"user"][@"profile_image_url"]]]; //设置昵称 self.nameLabel.text = dic[@"user"][@"name"]; //设置时间 NSDateFormatter *iosDateFormater=[[NSDateFormatter alloc]init]; iosDateFormater.dateFormat=@"EEE MMM d HH:mm:ss Z yyyy"; //必须设置,否则无法解析 iosDateFormater.locale=[[NSLocale alloc]initWithLocaleIdentifier:@"en_US"]; NSDate *date=[iosDateFormater dateFromString:dic[@"created_at"]]; //目的格式 NSDateFormatter *resultFormatter=[[NSDateFormatter alloc]init]; [resultFormatter setDateFormat:@"MM月dd日 HH:mm"]; self.dateLabel.text = [resultFormatter stringFromDate:date]; //设置微博博文 self.weiboTextLabel.text = dic[@"text"]; } //通过block回调来返回按钮的tag - (IBAction)tapCellButton:(id)sender { ="crayon-h"> (IBAction)tapCellButton:(id)sender { ý的实现了,写完基本功能后看着代码有些别扭,特别是用到的四种cell的类,重复代码有点多,所以今天花点时间把代码重构一下。为了减少代码的重复编写把cell中相同的部分抽象成父类,然后继承。不过也是结合着storyboard做的。在优化时转发的View和评论的View相似,于是就做了个重用。在原来的代码上就把cell的代码进行了重写,所以本篇作为补充,关键代码还得看之前的博客。
1.第一种cell,只有微博内容,没有图片,效果如下: cell对应的代码如下: TextTableViewCell.h
TextTableViewCell.m(带图片的cell继承于这个cell)
|