您好我们如何为iPhone应用程序连接带有Table View iOS 7+的Collection View ..
我想在屏幕的顶部有一个滚动视图,在剩下的屏幕上,我想要一个TableView,基本上显示用户在CollectionView中选择的任何信息。
由于我是iOS的新手,如果你能指出我任何有用的资源,那就太棒了。
干杯
答案 0 :(得分:0)
有很多方法可以实现这一点,但我通常都在一个视图控制器中完成。有些人不同意这种做法。但是,它更简单,也很简单。
为此,您可以创建一个空白VC并初始化您的集合视图和表视图&添加到VC的视图中,并将您的VC指定为委托&数据源。然后,您实现集合视图&表格查看方法&委托方法。选择CollectionView单元后,您可以更新表视图数据源(如果是数组)或对核心数据运行谓词,然后在表视图上重新加载以获取新的详细信息。
请务必实现UICollectionView和UITableView所需的所有方法,您将从Apple文档中获取这些方法。如果你这样做,它应该是直截了当的。
我不知道你在这个问题上得到了什么。
答案 1 :(得分:0)
最后我设法让这个半工作..谢谢RegularExpression !! (很明显,我一直在学习很多东西)..然而,我已经注意到了......收集视图,' cellForItemAtIndexPath'被调用了两次......结果......我的表格视图总是显示下一个单元格的数据。可以解决发生的事情。这是我的VC代码。我无法锻炼我所做的事情&#39我做错了。我需要调查在主视图上使用2个容器并添加CollectionViewController和TableViewController ...不确定那是更好的方法..但在我采用这种方法之前...想知道是否有无论如何我可以修复我现在拥有的东西..
- (void) setManagedObjectContext:(NSManagedObjectContext *)managedObjectContext {
_managedObjectContext = managedObjectContext;
[self performFetchForCV];
}
- (void)viewDidLoad
{
[super viewDidLoad];
UICollectionViewFlowLayout *flowLayout = [[LineLayout alloc] init];
[self.collectionView setCollectionViewLayout:flowLayout];
}
-(void)performFetchForCV {
if (!_fetchedResultsController) {
NSFetchRequest *request= [NSFetchRequest fetchRequestWithEntityName:@"Entity"];
gymClassesRequest.predicate = nil;
gymClassesRequest.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"name"
ascending:YES
selector:@selector(localizedStandardCompare:)]];
_fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request managedObjectContext:self.managedObjectContext sectionNameKeyPath:nil cacheName:nil];
}
NSError *error = nil;
if (![_fetchedResultsController performFetch:&gymClassesError]) {
NSLog(@"Unresolved error %@, %@", gymClassesError, [error userInfo]);
abort();
}
[self.collectionView reloadData];
}
- (void)performFetchForTV:(NSPredicate *)predicate {
if (!_fetchedResultsControllerForTV) {
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Entity2"];
gymScheduleRequest.predicate = nil;
gymScheduleRequest.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"day" ascending:YES selector:@selector(localizedStandardCompare:)]];
_fetchedResultsControllerForTV = [[NSFetchedResultsController alloc] initWithFetchRequest:request managedObjectContext:self.managedObjectContext sectionNameKeyPath:@"day" cacheName:nil];
}
[_fetchedResultsControllerForTV.fetchRequest setPredicate:predicate];
NSError *error = nil;
if (![_fetchedResultsControllerForTV performFetch:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
[self.tableView reloadData];
}
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
MyCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:reuseCollectionViewCellIdentifier forIndexPath:indexPath];
MyEntity *entity= [self.fetchedResultsController objectAtIndexPath:indexPath];
cell.nameLabel.numberOfLines = 0;
cell.nameLabel.lineBreakMode = NSLineBreakByWordWrapping;
cell.nameLabel.autoresizingMask = UIViewAutoresizingFlexibleHeight;
cell.nameLabel.text = entity.name;
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name= %@", entity.name];
[self performFetchForTV:predicate];
return cell;
}