2017-05-29 34 views
10

Moim zdaniem mam UITableView, który zawiera komórki z poziomą UICollectionView w środku. Problem polega na tym, że czasami nie są renderowane na urządzeniu/symulatorze. Jednocześnie widzę te komórki w widoku Hierarchia Debugger:UICollectionView nie renderuje komórek

Co widzę w widoku Hierarchia Debugger: enter image description here

Co widzę w urządzeniu: enter image description here

jak można zobacz, komórki (z obrazami) istnieją i mają poprawne ramki i zawartość (udowodnione przez Hierarchię View Hierarchy). Niemniej jednak z jakiegoś powodu nie są one renderowane na urządzeniu/symulatorze. Co może być tego przyczyną i jak mogę to naprawić?

UPD: kolejny przykład z "3D" widzenia i błędów na jednej komórce, ale nie na drugim zrzucie

urządzenia: enter image description here

widok hierarchia debuggera: enter image description here

+0

czy dodaliście delegatów i datasoruce z storyboardu –

+0

@HimanshuMoradiya oczywiście zrobiłem, czy przeczytaliście całe pytanie? –

+0

Tak, masz problem z uruchomieniem aplikacji w trybie debugowania Masz komórkę, ale kiedy jej uruchamianie normalnie nie może być wyświetlane w symulatorze prawy –

Odpowiedz

0

Okazało się, że mój szczególny problem jest związany z UICollectionView assertion error on stale data, ponieważ czasami zdarza się wspomniana awaria. Bawiąc się po [collectionViewLayout invalidateLayout] w końcu to naprawiłem.

Wystarczy nagrać to, co nie było przyczyną (i co należy sprawdzić, czy w obliczu tego samego problemu):

  1. sprawdzić, czy zaktualizować widoki w głównym wątku tylko
  2. sprawdzić czy wszystkie stałe autoLayout są ustawione prawidłowo i nie są sprzeczne
  3. czek że wewnętrzne rozmiary treści swoich poglądów dostosowanego są obliczone prawidłowo

Jeśli żadne z powyższych jest przyczyną problemu spróbuj invalidateLayout gdzieś w okolicy reloadData lub w środku layoutSubviews lub podobnej metody.

+0

Uwaga na temat nagrody: pytanie, dlaczego widoki są widoczne w debuggerze widoku hierarchii, ale nie na urządzeniu lub symulatorze, jest nadal otwarte. Ci, którzy udzielą odpowiedzi, zostaną nagrodzeni. –

Powiązane problemy