如何能让点击cell里面的uicollectionview的每一行实现跳转?

因为是在uitablecell里面创建了一个uicollectionview,所以点击每一行的方法写在cell类里面, 但是写跳转方法的时候发现点不到控制器,求大神教教如何破!!!

阅读 6k
6 个回答

这个问题特别好,理论上来说,该uicollectionview的delegate应该由tableviewcell去响应。
可是单纯的cell是拿不到viewcontroller的。这个就需要你自己提前去考虑。
这个cell里面的uicollectionview里面的内容,是由谁提供的,是不是可以动态的。
如果你把这种包含uicollectionview的tableviewcell当成是一种可以向很多人提供使用时,你又会如何去设计?

我说个简单的初步解决方法,对这个类型的cell增加一种delegate,有一个getViewController的方法。cell.delegate = self;
viewcontroller实现getViewController方法。
至于你要navi或者tab或者uivc都可以 看你自己需要。
cell里面的跳转实现获取viewcontroller可以这么写 [self.delegate getViewController];
看得懂么?

新手上路,请多包涵
  • (void)tableView:(UITableView )tableView didSelectRowAtIndexPath:(NSIndexPath )indexPath{} 这个方法是

在storyboard中,可以试一试在Cell中放container,然后container VC指向CollectionVC,在CollectionVC中写collction跳转方法,在tableViewVC中写tableView的跳转方法

问题解决了,我上一下代码,首先在tableViewCell里面创建委托方法
图片描述

图片描述

在.m里面代码
图片描述
图片描述

最后在controller里面实现委托方法就可以了

方法一 获取控制器 (一般没人用不建议)

  • (UIViewController*)viewController {
    for (UIView* next = [self superview];next;next = next.superview)
    {

       UIResponder* nextResponder = [next nextResponder];
       if ([nextResponder isKindOfClass:[UIViewController class]]) {
           return (UIViewController*)nextResponder;
       }

    }
    return nil;
    }

方法二在tableViewcell 添加代理(在MVC模式是最常用的建议)

除了delegate,还可以采用写block回调函数的方法实现,题主可以试试。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题