2014-06-05 14 views
5

Non ho assolutamente idea di cosa stia succedendo, ma per qualsiasi motivo la vista di raccolta che sto usando ha un ciclo infinito del metodo [UICollectionViewData layoutAttributesForElementsInRect:].Ciclo infinito di layoutAttributesForElementsInRect

La vista raccolta è all'interno della barra di navigazione personalizzata. In uno scenario in cui utilizzo questa barra di navigazione personalizzata, tutto funziona come previsto. In un altro scenario, scorre infinitamente.

  • Ho provato a non impostare l'origine dati o il delegato su collectionView.
  • Ho provato a impostare l'origine dati e delegare, ma restituendo 0 per itemsInSection.
  • Sto utilizzando il layout automatico come nella situazione di lavoro e sto inizializzando la barra di navigazione personalizzata come nella situazione di lavoro.

Per quanto riguarda il codice di pubblicazione, non sono sicuro di cosa pubblicare. Il ciclo infinito inizia dopo che è stato chiamato [UIWindow makeKeyAndVisible]. Questo metodo non ritorna mai. È stato solo dopo la profilazione del tempo che ho scoperto che era questo il [UICollectionViewData layoutAttributesForElementsInRect:] a causare il problema.

risposta

11

Ho avuto lo stesso problema di ciclo infinito all'interno di [UICollectionViewData layoutAttributesForElementsInRect:] durante l'aggiornamento manuale di contentOffset a collectionView senza elementi (ad esempio, quando numberOfItemsInSection era 0).

+1

Questo commento ha salvato il nostro bacon. Grazie Andrew – jakev

+1

Non posso ringraziarti abbastanza ...! –

+0

Uomo, se ho appena trovato la tua risposta 2 giorni fa .. Grazie. – codrut

0

Ho riscontrato un problema con le altezze delle diverse viste di raccolta in una vista tabella, quindi ho seguito questo UICollectionView inside a UITableViewCell — dynamic height?. Ma ho erroneamente commentato il [self.collectionView layoutIfNeeded]; perché avevo pensato che avrebbe migliorato le prestazioni di scorrimento. L'ho decommentato e ha funzionato di nuovo! Non so perché funziona anche se