UICollectionView Footers.阅读文档,仍然无法显示。必须以编程方式完成



我正在尝试将补充页脚添加到UICollectionView中。根据苹果的文档,我似乎找到了所有正确的方法,但出于某种原因:

- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath

根本没有接到电话。

我已经将UICollectionReusableView子类化为一个名为SmartActionFooterView的类。

ViewController中,在ViewDidLoad方法中,我注册视图并将其与重用标识符相关联,例如:

    [self.collectionView registerClass:[SmartActionFooterView class] forSupplementaryViewOfKind:UICollectionElementKindSectionFooter withReuseIdentifier:@"footerView"];

然后用…重写UICollectionFlowDelegate方法。。。

- (CGSize)collectionView:(UICollectionView *)collectionView
                  layout:(UICollectionViewLayout *)collectionViewLayout
 referenceSizeForFooterInSection:(NSInteger)section
{
    NSLog(@"sizing footer");
    return CGSizeMake(300,100);
}

这个NSLog正在打印出来。

然后我使用UICollectionViewDataSource方法。。。

- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath
{
NSLog(@"Something is happening with the footer...");
SmartActionFooterView *footerView = [collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionFooter withReuseIdentifier:@"footerView" forIndexPath:indexPath];
footerView.backgroundColor = [UIColor yellowColor];
return footerView;
}

然而,这个NSLog什么都没打印,但我不知道为什么。

我有一个限制,那就是需要通过编程来完成这一切(没有故事板)。

谢谢!

我建议您进行调试和检查。调试在任何IDE中都是一个非常强大的工具,它在大多数情况下都有帮助
我认为您还没有设置UICollectionView对象的datasourcedelegate属性。

所以,试试:

self.collectionView.datasource = self;
self.collectionView.delegate = self;

发现问题。

我正在对UICollectionViewFlowLayout进行子类化,并错误地调用:

layoutAttributesForSupplementaryViewOfKind:atIndexPath

适当地在所述子类中。此方法的调用需要在:中完成

layoutAttributesForElementsInRect:

然后将属性传递到一个可变数组中。

根据我对这里文件的理解。尽管在我的视图控制器中创建和退出页脚的方法是UICollectionViewDataSource协议的一部分,但数据源首先与UICollectionViewFlowLayout进行检查,以查看需要创建哪些对象。

相关内容

  • 没有找到相关文章

最新更新