从集合视图单元格单击按钮导航到视图控制器

Posted

技术标签:

【中文标题】从集合视图单元格单击按钮导航到视图控制器【英文标题】:navigate to a view controller on buttonclick from a collectionview cell 【发布时间】:2017-03-12 14:40:19 【问题描述】:

我有一个由集合视图组成的视图控制器。这个集合视图有一个 UIbutton 块。单击此按钮并传递一些数据时,我想导航到另一个视图控制器。请注意,它是一个 UIButton 块 将不胜感激任何帮助。

【问题讨论】:

【参考方案1】:

首先,确保包含集合视图的视图控制器中嵌入了 NavigationController。

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

    第一种方式:

    让我们设置按钮选择器

    [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];
    
    

    第二种方式(自定义UICollectionViewCell):

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

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

    那我们在cellForItemAtIndexPath方法中实现吧。

    __weak typeof(self) weakSelf = self; cell.buttonTouchedBlock = ^ [weakSelf buttonTouchedAt:indexPath];

【讨论】:

以上是关于从集合视图单元格单击按钮导航到视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

如何在集合视图中单击单元格时创建按钮操作

导航控制器中不显示后退按钮

如何从不同的集合视图单元到不同的视图控制器

IOS Collection 视图单元格第一次单击并在视图出现时删除选择

视图控制器中的集合视图,单元格触摸集合视图本身的顶部边框(嵌入在导航控制器中)

以编程方式将按钮添加到集合视图单元格