1. 程式人生 > >IOS封裝自定義Cell方法

IOS封裝自定義Cell方法

很多時候Objective-C自帶的cell樣式根本無法滿足我們的開發需求,身邊又會有產品美工時不時盯著,一點偏差都不能有,於是不得不自己去建立cell。自定義cell的最簡便方式就是在tableview的cellforrow方法裡去佈局cell的樣式,但這樣就不可避免的會造成Controller程式碼量超多,非常臃腫,因此實際開發中我們應當多應用封裝的思想。

首先我們先自定義個Cell:

  1. @interface Mycell : UITableViewCell  
  2. +(instancetype)cellWithtableView:(UITableView *)tableview;  
  3. @property
    (nonatomic,strong)DateModel *model;  
  4. @property(nonatomic,weak) id<MycellDelegate> delegate;  
  5. @end

上述程式碼中的代理是cell中自定義按鈕的點選事件,詳情可見上一篇博文。

在.m檔案中實現類方法:

  1. +(instancetype)cellWithtableView:(UITableView *)tableview  
  2. {  
  3.     staticNSString *ID = @"cell";  
  4.     Mycell *cell = [tableview dequeueReusableCellWithIdentifier
    :ID];  
  5.     if(!cell)  
  6.     {  
  7.         cell = [[Mycell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ID];  
  8.         cell.selectionStyle = UITableViewCellSelectionStyleNone;  
  9.         cell.textLabel.font = [UIFont systemFontOfSize:13.0];  
  10.     }  
  11.     return cell;  
  12. }  
  13. //重寫佈局
  14. -(instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier
    :(NSString *)reuseIdentifier  
  15. {  
  16.     self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];  
  17.     if(self)  
  18.     {  
  19.         self.button = [[UIButton alloc] initWithFrame:CGRectMake(00, [UIScreen mainScreen].bounds.size.widthself.frame.size.height)];  
  20.         [self.button setTitle:@"我是按鈕點我" forState:UIControlStateNormal];  
  21.         [self.button setTitleColor:[UIColor redColor] forState:UIControlStateNormal];  
  22.         self.button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentRight;  
  23.         self.button.titleLabel.font = [UIFont systemFontOfSize:12.0];  
  24.         [self.contentView addSubview:self.button];  
  25.         [self.button addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];  
  26.     }  
  27.     returnself;  
  28. }  

通過一系列方法封裝後,我們在viewcontroller中只需要少量程式碼即可完成自定義cell的建立。
  1. -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath  
  2. {  
  3.     Mycell *cell = [Mycell cellWithtableView:tableView];  
  4.     cell.model = self.Array[indexPath.row];  
  5.     cell.delegate = self;  
  6.     return cell;  
  7. }  

如此一來不僅完美的完成了cell的自定義建立,程式碼看起來也很美觀,在同事review程式碼的時候就可以避免被吐槽的尷尬==。當然了,還會有另一種情況就是不同行數的cell長得不一樣,我的做法是在類方法中加個引數,indexPath,傳入這個引數,可以讓類方法根據不同的行數建立不同的cell。