2016-06-21 61 views
-2

我想從我的委託方法「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從後臺重新加載到前臺?

+0

你能提供代碼嗎? –

+0

謝謝你的回覆,請再看看我的問題。 –

回答

0

要解決您需要使用流佈局初始化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]; 
}