我使用RFQuiltLayout代替uicollectionview
。
我的故事板包含Uiview
+ collectionview
。 collectionview是IBOutleted
到我的UiView
课程,在我的故事板中,我使用自定义布局为我的集合视图,如下所示:
我正在从appdelegate
类加载我的collectionview数据,所以在第一次运行时它返回0
numberOfItemsInSection
,并且从服务器获取数据后,它将加载我的collectionview。< / p>
现在的问题是,如果我将布局更改为流程序正常工作,但如果我使用像RFQuiltLayout
这样的自定义类,则不会出现单元格,
numberOfItemsInSection 返回我的实际值,但 cellForItemAtIndexPath 未被调用。
我的ViewDidLoad
中的代码:
self.CV.delegate = self;
self.CV.dataSource = self;
[self.CV registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"MyCell"];
RFQuiltLayout* layout = (id)[self.CV collectionViewLayout];
layout.direction = UICollectionViewScrollDirectionVertical;
layout.blockPixels = CGSizeMake(75,75);
我也在reloaddata
中呼叫viewDidAppear
。
和appdelegate
:
ParseOperation *weakParser = parser;
parser.completionBlock = ^(void) {
if (weakParser.appRecordList) {
dispatch_async(dispatch_get_main_queue(), ^{
MyCollectionViewController *rootViewControllers = (MyCollectionViewController*)[(UINavigationController*)self.window.rootViewController topViewController];
rootViewControllers.entries = weakParser.appRecordList;
[rootViewControllers.CV.collectionViewLayout invalidateLayout];
[rootViewControllers.CV reloadData];
});
}
有一件事是,如果我在我的委托中使用此代码,则显示uicollection但没有任何客户布局和滚动功能:
[rootViewControllers.CV reloadData];
NSMutableArray *indexPaths = [[NSMutableArray alloc] init];
NSIndexPath *indexPath;
for (int i = 0; i < [weakParser.appRecordList count]; i++) {
indexPath = [NSIndexPath indexPathForItem:i inSection:0];
[indexPaths addObject:indexPath];
}
[rootViewControllers.CV reloadItemsAtIndexPaths:indexPaths];
RFQuiltLayout中的方法被调用,但是内部布局的方法
uiview喜欢这些&#34; blockSizeForItemAtIndexPath &#34;和
&#34;的 blockSizeForItemAtIndexPath &#34;没有被召唤。
答案 0 :(得分:1)
您不需要在didload中再次注册课程。我想这就是你问题背后的原因。转到您的故事板并选择您的CollectionViewCell
并将其类更改为您的自定义类。并从didLoad [self.CV registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"MyCell"];