将布局更改为自定义类后,UicollectionViewCell 未显示
Posted
技术标签:
【中文标题】将布局更改为自定义类后,UicollectionViewCell 未显示【英文标题】:UicollectionViewCell not showing up after changing the Layout to custom class 【发布时间】:2015-03-09 06:49:04 【问题描述】:我将RFQuiltLayout 用于我的uicollectionview
。
我的故事板包含Uiview
+ collectionview
。 collectionview 是 IBOutleted
到我的 UiView
类,在我的故事板中,我正在为我的 collectionview 使用自定义布局,如下所示:
我正在从appdelegate
类加载我的collectionview 数据,所以在第一次运行时,它会为numberOfItemsInSection
返回0
,在从服务器获取数据后,它将加载我的collectionview。
现在的问题是,如果我将布局更改为流程序可以正常工作,但如果我使用 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);
我也在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”没有被调用。
【问题讨论】:
您可能需要创建布局。查看[这篇文章][1]。 [1]:***.com/questions/21664555/… 我不认为是这种情况,因为集合视图及其布局已经从情节提要中初始化。我还在布局中放置了一些 nslog,并且在 RFQuiltLayout 中调用了布局函数。 【参考方案1】:您无需在您的 didload 中再次注册该类。我想这就是你的问题背后的原因。转到您的 Storyboard 并选择您的 CollectionViewCell
并将其类更改为您的自定义类。并从您的 didLoad [self.CV registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"MyCell"];
【讨论】:
以上是关于将布局更改为自定义类后,UicollectionViewCell 未显示的主要内容,如果未能解决你的问题,请参考以下文章
如何将标签更改为与在 Xamarin 表单上显示通知相同的布局?