未调用UICollectionView数据源

时间:2013-07-15 17:42:05

标签: ios objective-c uicollectionview

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

我有一个ViewController,可以添加一个子视图:

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

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

- (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。

谢谢!

1 个答案:

答案 0 :(得分:2)

我认为这里有几个问题 - 查看控制器包含有一些复杂性,你可能需要阅读。

首先,您没有将EVPhotoCollectionViewController视图添加为您的vc的子视图,例如:

[self addSubView:pc.view];

此外,您没有为EVPhotoCollectionViewController设置框架,因此根据其实施方式,它可能无法显示正确的尺寸/位置。

最后,看起来你并没有在任何地方保留EVPhotoCollectionViewController。它的视图将由视图层次结构保留,但看起来EVPhotoCollectionViewController的实例将在创建它的函数超出范围时解除分配。

查看控制器遏制:How does View Controller Containment work in iOS 5?