ios细胞填充设计模式

时间:2015-03-30 09:06:12

标签: ios design-patterns

我有一个收集单元,用于多个屏幕并在其中设置大量数据。哪种方法更好,在UIViewController或UICollectionviewCell中设置数据?我没有看到第二,但我不知道如何找到正确的设计模式。例如:

首先:

@implementation ProductViewController:UIviewController
{
  -(UICollectionviewCell*)CellForIndexpath:(UIcollectionview*) collectionview..{
      myCell *cell=[collectionview dequecellwithcellidentifier:@"cell"];
      Product *pr=[datasource objectAtIndex:indexpath.row];
      cell.lblName.text=pr.name;
      cell.lblSize.text=pr.size;
      [cell.imgCover setimage:pr.image];
      ..
      return cell;
  }
}

第二

@implementation ProductViewController:UIviewController
{
  -(UICollectionviewCell*)CellForIndexpath:(UIcollectionview*) collectionview..{
      myCell *cell=[collectionview dequecellwithcellidentifier:@"cell"];
      Product *pr=[datasource objectAtIndex:indexpath.row];
      [cell initProduct:pr];
      return cell;
  }
}
@implemeantation myCell:UICollectionviewCell{
  -(void)initProduct:(Product*)pr{
     self.lblName.text=pr.name;
     self.lblSize.text=pr.size;
     [self.imgCover setimage:pr.image];
     ..
  }
}

1 个答案:

答案 0 :(得分:0)

您的单元格(视图)不应该知道您的模型。如果我们要看看你的第二种方法:

   @implemeantation myCell:UICollectionviewCell{
    -(void)initProduct:(Product*)pr{
       self.lblName.text=pr.name;
       self.lblSize.text=pr.size;
       [self.imgCover setimage:pr.image];
       ..
    }
   }

在这种情况下,您的视图和模型彼此了解。

我的建议是 - 在UICollectionViewCell初始化中你应该做的关于视图本身的一切(文本大小,颜色,字体等),关于数据的所有内容都应放在你的UIViewController中。

检查:http://www.objc.io/issue-1/lighter-view-controllers.html http://en.wikipedia.org/wiki/Separation_of_concerns