因为是在uitablecell里面创建了一个uicollectionview,所以点击每一行的方法写在cell类里面, 但是写跳转方法的时候发现点不到控制器,求大神教教如何破!!!
方法一 获取控制器 (一般没人用不建议)
-
(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模式是最常用的建议)
这个问题特别好,理论上来说,该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];
看得懂么?
问题解决了,我上一下代码,首先在tableViewCell里面创建委托方法
在.m里面代码
最后在controller里面实现委托方法就可以了
在storyboard中,可以试一试在Cell中放container,然后container VC指向CollectionVC,在CollectionVC中写collction跳转方法,在tableViewVC中写tableView的跳转方法
(void)tableView:(UITableView )tableView didSelectRowAtIndexPath:(NSIndexPath )indexPath{} 这个方法是
除了delegate,还可以采用写block回调函数的方法实现,题主可以试试。