ios - 未调用 UICollectionView 数据源

标签 ios objective-c uicollectionview

即使我正在设置委托(delegate)和数据源,也永远不会调用数据源方法。

我有一个添加 subview 的 ViewController:

EVPhotoCollectionViewController *pc = [[EVPhotoCollectionViewController alloc] initWithNibName:@"EVPhotoCollectionViewController" bundle:nil];
self.damagePhotosView = pc.view;

在 EVPhotoCollectionViewController 内部,我在 xib 中连接了委托(delegate)和数据源,但也通过如下代码:

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
    self.collectionView.delegate = self;
    self.collectionView.dataSource = self;

    [self.collectionView reloadData];
}

没有调用任何数据源方法。我已验证 self.collectionView 在调用 reloadData 时不为 null。

谢谢!

最佳答案

我认为这里有几处错误——查看 Controller 包含有一些复杂性,您可能需要继续阅读。

首先,您没有将 EVPhotoCollectionViewController View 添加为 vc 的 subview ,例如:

[self addSubView:pc.view];

此外,您没有为 EVPhotoCollectionViewController 设置框架,因此根据它的实现方式,它可能无法以正确的大小/位置显示。

最后,看起来您没有在任何地方保留 EVPhotoCollectionViewController。它的 View 将由 View 层次结构保留,但看起来 EVPhotoCollectionViewController 的实例一旦创建它的函数超出范围就会被释放。

查看 Controller 包含:How does View Controller Containment work in iOS 5?

关于ios - 未调用 UICollectionView 数据源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17660443/

相关文章:

iphone - 难以理解通用应用程序、多个 View Controller 和 xib 文件

objective-c - 如何同时获取多个目标的 IPA(Xcode 7.0 GM)?

uitableview - 有没有办法改变 UICollectionViews 的动画速度?

ios - 从 Swift 3.0 转换为 Swift 2.3

android - View 中的 React-Native 图像大小未知大小

ios - 在 ios 上从电话簿导入联系人时过滤 truecaller 垃圾邮件联系人(保存名称 "Identified as Spam")

ios - UICollectionView 和单元格分隔符?这是要由补充意见处理的事情吗?装修意见?在细胞本身内?

ios - 在 for 循环 Swift 之外访问变量

iphone - NSMutableArray: count 是一个方法还是一个属性?

ios - UICollectionView 断言失败