0

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

我有一个 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 时不为空。

谢谢!

4

1 回答 1

2

我认为这里有几件事是错误的——查看控制器包含有一些复杂性,您可能需要阅读这些内容。

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

[self addSubView:pc.view];

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

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

视图控制器包含:视图控制器包含在 iOS 5 中如何工作?

于 2013-07-15T17:50:14.327 回答