将Layout更改为自定义类后,UicollectionViewCell未显示

时间:2015-03-09 06:49:04

标签: ios objective-c uicollectionview

我使用RFQuiltLayout代替uicollectionview

我的故事板包含Uiview + collectionview。 collectionview是IBOutleted到我的UiView课程,在我的故事板中,我使用自定义布局为我的集合视图,如下所示:

enter image description here

我正在从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;没有被召唤。

1 个答案:

答案 0 :(得分:1)

您不需要在didload中再次注册课程。我想这就是你问题背后的原因。转到您的故事板并选择您的CollectionViewCell并将其类更改为您的自定义类。并从didLoad [self.CV registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"MyCell"];

中删除此行