扫码关注官方订阅号
因为是在uitablecell里面创建了一个uicollectionview,所以点击每一行的方法写在cell类里面, 但是写跳转方法的时候发现点不到控制器,求大神教教如何破!!!
小伙看你根骨奇佳,潜力无限,来学PHP伐。
这个问题特别好,理论上来说,该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回调函数的方法实现,题主可以试试。
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
扫描下载App
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
这个问题特别好,理论上来说,该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)
{
}
return nil;
}
方法二在tableViewcell 添加代理(在MVC模式是最常用的建议)
除了delegate,还可以采用写block回调函数的方法实现,题主可以试试。