我很长时间都在努力解决这个问题。
原因是我收藏了delegate
& “datasource
”下的CollectionView
不是“CollectionView Controller
”,因为我在collectionView
单元格中嵌入了一个TableView
但是当我想设置
时- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)
{
}
这是我的代码
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString * Cell;
if (indexPath.section==0)
{
switch (indexPath.row)
{
case 0:
Cell = @"MoviesIntro";
break;
case 1:
Cell = @"影片介紹";
break;
case 2:
Cell = @"Moviesrelative";
default:
break;
}
}
UITableViewCell *cell =[tableView dequeueReusableCellWithIdentifier:Cell];
if (!cell)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:Cell];
}
switch (indexPath.row)
{
case 0:
{
}
break;
case 1:
{
}
break;
case 2:
{
Tony=(CollectionView*)[cell viewWithTag:741];
Tony.pageImages =imagearray;
[Tony reloadData];
}
break;
default:
break;
}
return cell;
}
这是CollectionView.m代码
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{
self.pic_url=[comment[indexPath.row] objectForKey:@"pic_url"];
self.name_zh=[comment[indexPath.row] objectForKey:@"name_zh"];
self.name_en=[comment[indexPath.row]objectForKey:@"name_en"];
self.intro=[comment[indexPath.row] objectForKey:@"short_Intro"];
self._id=[comment[indexPath.row] objectForKey:@"_id"];
self.trailer=[comment[indexPath.row] objectForKey:@"trailer"];
self.movieTime=[comment[indexPath.row] objectForKey:@"movieTime"];
self.picH_url=[comment[indexPath.row] objectForKey:@"picH_url"];
self.category=[comment[indexPath.row] objectForKey:@"category"];
self.director=[comment[indexPath.row] objectForKey:@"director"];
self.actor=[comment[indexPath.row] objectForKey:@"actor"];
self.language=[comment[indexPath.row] objectForKey:@"language"];
self.MyList=false;
[UIView animateWithDuration:0.05 delay:0 options:UIViewAnimationOptionCurveLinear animations:^{
} completion:^(BOOL finished) {
}];
}
Tony是Collection view.h / m文件。 pageImages是Tony.h文件中的NSMutableArray。
转到其他视图控制器,在对象上找不到属性,所以我甚至不知道我能做什么才有人有好主意?
答案 0 :(得分:0)
您可以设置添加delegate
的{{1}}变量和委托方法,例如:
UITableViewCell
然后在- (void) pushToViewController;
文件中使用collectionView委托方法添加:
YourTableViewCell.m
“tableView Controller”应该是- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *){
[delegate pushToViewController];
}
的代理人,在tableViewCell
的控制器中:
UITableView
答案 1 :(得分:0)
通常,您不应让UI项目实现自己的委托和数据源。它有效,但打破了MVC模式。而不是我使用一些自定义UICollectionView来保存对它所属的表的行的一些引用。你甚至可以'滥用'标签属性(我个人不喜欢,但这是一个非常常见的模式),而不需要子类UICollectionView。
您的UITableViewController也可以为集合视图实现数据源和委托。在每次调用任何委托方法时,都会将对thisView的引用传递给方法,以便您可以从那里获取表的行(当然,您必须在表视图的cellForRowAtIndexPath中设置它)并从那里开始。
因此,我宁愿建议重新分解您的代码并坚持使用MVC模式。