Collectionview单元格打开新视图

时间:2014-10-08 01:50:22

标签: objective-c uicollectionview viewcontroller

我有一个包含6个单元格的集合视图,如何在单击时让每个单元格打开一个新的viewcontroller?

1 个答案:

答案 0 :(得分:1)

为了实现您的目标,您需要编辑2个文件:

  1. 在故事板中,您需要为集合视图中的每个静态单元格添加单元格视图。只需将UICollectionViewCells拖到集合视图即可。对于每个单元格,在Storyboard的文档大纲中选择单元格时,您需要在属性检查器中定义唯一的可重用标识符(表示名称,如 CellType1 )。然后从每个单元格控制拖动到所需的目标视图控制器以创建Push segue(前提是您的集合视图与UINavigationController相关联。)

  2. 创建UICollectionViewController 的子类,并将其作为集合视图控制器的类在Storyboard中分配(请参阅标识检查员)。

  3. UICollectionViewController子类中实现以下方法:

    - (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView
    {
      return 1;
    }
    
    - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
    {
      // Enter the number of static cells that are present in the Storyboard's collection view:
      return 3;
    }
    
    - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
    {
      // Enter the reusable identifiers that are defined for each cell in the Storyboard's collection view:
      NSArray *cellIdentifiers = @[@"CellType1", @"CellType2", @"CellType3"];
      NSInteger cellIdentifierIndex = indexPath.item;
    
      // Make one identifier the default cell for edge cases (we use CellType1 here):
      if (cellIdentifierIndex >= cellIdentifiers.count) cellIdentifierIndex = 0;
    
      UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:cellIdentifiers[cellIdentifierIndex] forIndexPath:indexPath];
      // Configure the cell …
      return cell;
    }
    

    我创建了一个演示应用来展示完整的实现:https://github.com/widescape/StaticCollectionViewCells