将布局更改为自定义后 UicollectionViewCell 未显示 class

UicollectionViewCell not showing up after changing the Layout to custom class

我正在为我的 uicollectionview 使用 RFQuiltLayout

我的故事板包含 Uiview + collectionview。 collectionview 是 IBOutleted 到我的 UiView class 并且在我的情节提要中我正在为我的 collectionview 使用自定义布局,如下所示:

我正在从 appdelegate class 加载我的 collectionview 数据,所以首先 运行 它 return 0 对于 numberOfItemsInSection 和之后从服务器获取数据,它将加载我的集合视图。

现在的问题是,如果我将 Layout 更改为 flow 程序可以正常工作,但如果我使用 custome class,例如 RFQuiltLayout,则不会显示任何单元格,

numberOfItemsInSection return 是我的实际值,但 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);

我也在viewDidAppear打电话给reloaddata

并在 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 喜欢这些“blockSizeForItemAtIndexPath”和

"blockSizeForItemAtIndexPath" 未被调用。

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

中删除这一行