我在一个特定的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
希望这会有所帮助:)

10-08 05:35