UICollectionView如何从委托
问题描述:
我想从我的委托方法“applicationDidEnterForeground”刷新我的CollectionView reloadData,但我得到一个错误“UICollectionView如何从委托
在我CollectionViewController” UICollectionView必须以非空布局参数进行初始化”我有这样的方法
-(void)reloadThisData
{
[self.collectionView reloadData];
}
,这里是我的的appDelegate
- (void)applicationWillEnterForeground:(UIApplication *)application {
CollectionViewController *collectionViews = [[CollectionViewController alloc]init];
[collectionViews reloadThisData];
}
码
我知道它只会创建另一个collectionView,这就是为什么它只会返回一个空值。有没有其他方法可以将我的uiviewcollection从后台重新加载到前台?
答
要解决您需要使用流布局初始化CollectionViewController的错误。
UICollectionViewFlowLayout* flowLayout = [[UICollectionViewFlowLayout alloc] init];
CollectionViewController * collectionViews = [[CollectionViewController alloc] initWithCollectionViewLayout:flowLayout];
[collectionViews reloadThisData];
我会建议不同的方法来这样做,虽然,在你的应用程序代理,你将创建CollectionViewController的新实例,而不是针对所显示的一个。 您应该在CollectionViewController的viewWillAppear方法中订阅“UIApplicationDidBecomeActiveNotification”通知。
-(void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reloadThisData) name:UIApplicationDidBecomeActiveNotification object:nil];
}
不要忘记也要删除观察者,以免重复调用重新加载方法。
-(void)viewDidDisappear:(BOOL)animated
{
[super viewDidDisappear:animated];
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationDidBecomeActiveNotification object:nil];
}
你能提供代码吗? –
谢谢你的回复,请再看看我的问题。 –