从collectionview单元格中按钮单击导航到视图控制器

时间:2017-03-12 14:40:20

标签: objective-c uiviewcontroller uibutton uicollectionviewcell

我有一个viewcontroller,它由一个集合视图组成。此集合视图具有UIbutton块。我想在单击此按钮并导入一些数据时导航到另一个视图控制器。注意它是一个UIButton块 非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

首先,确保由集合视图组成的viewcontroller中嵌入了NavigationController。

其次,您有两种方法可以将一些数据传递给另一个视图控制器:

  1. 第一种方式:

    设置按钮选择器

    [button addTarget:select action:@selector(buttonTouched:)
        forControlEvents:UIControlEventTouchUpInside];
    

    然后让我们将选择器实现为

    - (void)buttonTouched:(id)sender {
    // Find tableViewCell
    UIView *view = field;
    while (view && ![view isKindOfClass:[UICollectionViewCell class]]){ 
      view = view.superview;
    }
    UICollectionViewCell *cell = (UICollectionViewCell *)view;
    NSIndexPath *indexPath = [self.collectionView indexPathForCell:cell];
    // TODO: get data for above indexPath
    UIViewController *nextViewControler = [[UIViewController alloc] init];
    [self.navigationController pushViewController:nextViewControler animated:YES];
    }
    
  2. 第二种方式(用于自定义UICollectionViewCell):

    您为该按钮连接IBAction,然后定义一个像单元格属性的块(注意:该块的属性应该是复制

    例如:@property(copy, nonatomic) dispatch_block_t buttonTouchedBlock;

    然后让我们用cellForItemAtIndexPath方法实现它。

    __弱类型(自我)弱自我=自我;  cell.buttonTouchedBlock = ^ {     [weakSelf buttonTouchedAt:indexPath];  }