我在一个特定的UICollectionViews
中有两个UIViewController
,并且我希望在其中两个中具有不同数量的部分。我一直在尝试以下方式
- (NSInteger)numberOfSectionsInCollectionView: (UICollectionView *)collectionView {
if (collectionView == self.firstcollectionView) {
return objects.count + 1;
}
else
{
return 1;
}
}
但是由于某种原因,它似乎不起作用。
也尝试过使用标签,但也无法使其正常工作。
- (NSInteger)numberOfSectionsInCollectionView: (UICollectionView *)collectionView {
if (collectionView.tag == 1) {
return objects.count + 1;
}
else
{
return 1;
}
}
当我能够检查是否有1个对象时,它总是在
UICollectionViews
中都显示一个部分,这意味着第一个UICollectionView
中将有2个部分更新1:在调试时,似乎控件永远不会进入if-case总是返回1的情况。
更新2:如果条件是问题所在。它永远不会满足。
更新3:通过将
UICollectionViews
声明为类变量而不是属性,我能够使if-else正常工作。不过,两个UICollectionViews
的段数仍为1。- (NSInteger)numberOfSectionsInCollectionView: (UICollectionView *)collectionView {
if (collectionView == cardscollectionView) {
return 2;
}
else
{
return 1;
}
}
还是没用。虽然这
- (NSInteger)numberOfSectionsInCollectionView: (UICollectionView *)collectionView {
return 2;
}
工作得很好。只是为了说明布局很好,两个集合视图中确实显示了两个单元格。
样本项目(需求量大:D)-
https://github.com/genaks/UIICollectionView-Sections
我还没有达到重新加载UICollectionView的程度,因为当前设置尚未完全起作用
最佳答案
确保已将两个集合视图(例如,
self.firstcollectionView.delegate = self;
self.firstcollectionView.datasource = self;
和第二个collectionview也一样。
并确保已正确连接插座。
要么
确保正确设置标签
更新:
- (NSInteger)numberOfSectionsInCollectionView: (UICollectionView *)collectionView {
if (collectionView == self.cardscollectionView) {
NSLog(@"getting called. It is cardcollerctionView");
return 2;
}
if (collectionView == self.bankscollectionView) {
NSLog(@"getting called. it is bankcollectionView");
return 1;
}
else
{
return 1;
}
//use above or below both are working fine.
//******************************* OR ********************************************
if (collectionView == self.cardscollectionView) {
NSLog(@"getting called. It is cardcollerctionView");
return 2;
}
else
{
NSLog(@"it is else");
return 1;
}
}
我已经运行了您的演示,一切正常。我已经用
numberofsection
方法更新了答案。代码的两个部分都在工作。确保两个UICollectionViewLayout
都没有使用相同的collectionViews
希望这会有所帮助:)