我正在开发一个UICollectionView用来显示几张专辑的项目.项目显示正常,但现在我想在第一部分上方显示标题.
为此,我添加了registerNib:forSupplementaryViewOfKind:withReuseIdentifier:我的init方法.像这样:
[self.collectionView registerNib:[UINib nibWithNibName:@"AlbumHeader" bundle:nil] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:kAlbumHeaderIdentifier];
Run Code Online (Sandbox Code Playgroud)
(AlbumHeaderNib包含类的视图AlbumHeader,它是.的子类UICollectionView.)
之后,我实现了collectionView:viewForSupplementaryElementOfKind:atIndexPath方法:
- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath {
return [collectionView dequeueReusableSupplementaryViewOfKind:kind withReuseIdentifier:kAlbumHeaderIdentifier forIndexPath:indexPath];
}
Run Code Online (Sandbox Code Playgroud)
现在它应该尝试加载标题视图,我想.但事实并非如此,补充视图的方法不会被调用.
我错过了什么?坚持几个小时,已多次阅读文档UICollectionView,但似乎没有任何帮助.有什么想法吗?
我已经实现了UICollectionView一个自定义布局.它为布局添加了装饰视图.我使用以下代码添加装饰视图的布局属性:
-(NSArray *)layoutAttributesForElementsInRect:(CGRect)rect
{
NSArray *allAttributes = [super layoutAttributesForElementsInRect:rect];
return [allAttributes arrayByAddingObject:[self layoutAttributesForDecorationViewOfKind:kHeaderKind atIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]]];
}
Run Code Online (Sandbox Code Playgroud)
集合视图中的数据由a提供NSFetchedResultsController.
现在它看起来好像它工作正常,但是当集合视图为空时,它失败,因为有第0节.试图在没有索引路径的情况下使用它,但也失败了.关于如何在空中使用装饰视图的任何想法UICollectionView?应该是可能的,因为装饰视图不是数据驱动的.
cocoa-touch nsfetchedresultscontroller ios6 uicollectionview
我目前正在开发一个iPad应用程序项目.主屏幕是一个UICollectionView带AlbumCell的子类UICollectionViewCell.现在我想添加一个UILongPressGestureRecognizer弹出一个UIActionSheet.
首先我尝试了UICollectionViewController,但我认为这不是添加它们的正确位置.所以我最好的猜测是在AlbumCell课堂上添加手势?然后可能将自己添加为委托,因此它捕获了自己的手势.
到目前为止这是一个好方法吗?
在我抓住手势后,我应该展示一下UIActionSheet.现在我UICollectionViewController在用户在编辑模式下选择单元格时打开它.但是我应该UICollectionViewController像打开现在一样打开它吗?或者细胞应该自己处理UIActionSheet吗?
最终我UICollectionViewController要做的事情,可能是让他打开UIActionSheet,或者相应地处理它的结果.如何AlbumCell与它"沟通"?
这是我多次努力的事情,而不仅仅是在这个用例中.方法是否接近,或者我应该完全不同地处理这些行为?
我已经UICollectionView使用核心数据设置了一个获取的结果控制器.我UIImagePickerController用来添加项目UICollectionView.现在,当我点击存储在我的设备上的其中一张照片时,它将被添加到我的托管对象上下文中,并将被插入到UICollectionView.
现在,当我快速添加多个项目时,应用程序崩溃并出现以下错误:
2012-10-07 13:17:46.770 PhotoLibrary[2444:907] *** Assertion failure in -[UICollectionView _endItemAnimations], /SourceCache/UIKit/UIKit-2372/UICollectionView.m:2801
Run Code Online (Sandbox Code Playgroud)
它似乎无法处理添加项目,而前一个添加项目的动画尚未结束.只是当您快速添加它们时会发生,但有些用户会这样做.
是否有一个很好的方法来等待并在另一个完成后添加项目?用户应该能够"实时"添加它们,所以我不能一次运行所有更改.
首先; 我目前被用作web开发人员,所以我脑子里有一些东西被烧掉了,其中之一就是:不要使用表格进行布局,只是不要!
我也在学习Objective-C并使用Cocoa框架.以下是它的引用:"你可以结合使用这两种方法将表格转换为任意数据列表视图.每行现在可以是任意大小,并使用任何单元格绘制.这使您可以在表格视图中绘制完全不相关的内容并将其用作布局容器."
它摸上去很舒适SO错做到这一点......但是,这是常见的与可可OSX发展的,或者我应该避免这种情况?
我尝试使用带有导航栏的"选项卡式应用程序".使用默认标签栏工作正常,但我只是无法gat导航栏.我找到了一些关于推动导航栏和类似东西的东西,但我发现的所有东西都是几年前的,所以不要帮助我.最近的东西已经过时,因为iOS5和Xcode的新版本..
任何人都能指出我正确的方向来结合一个来解决这个问题吗?
请记住以下事实:
编辑:最初的问题是错误的,所以一些内容可能有点无关.但是可能会让你对我正在做的事情有更好的印象.
我有一个非常奇怪的问题NSFetchedResultsController.首先,我将描述我的应用程序的当前情况.我有多个Album与Photo实体,这是一个抽象类的子类都AbstractItem.
在我,AlbumViewController我正在使用a NSFetchedResultsController来获得AbstractItem当前所有的superAlbum.像这样:
- (NSFetchedResultsController *)fetchedResultsController {
if (!fetchedResultsController ) {
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:[NSEntityDescription entityForName:@"AbstractItem"
inManagedObjectContext:managedObjectContext]];
[request setSortDescriptors:@[
[NSSortDescriptor sortDescriptorWithKey:@"type" ascending:YES],
[NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES],
[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:YES]
]];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"superAlbum = %@", self.parentAlbum];
[request setPredicate:predicate];
NSFetchedResultsController *newController = [[NSFetchedResultsController alloc] initWithFetchRequest:request
managedObjectContext:managedObjectContext
sectionNameKeyPath:@"type"
cacheName:nil];
newController.delegate = self;
self.fetchedResultsController = newController;
}
return fetchedResultsController;
}
Run Code Online (Sandbox Code Playgroud)
当我选择一个时 …