2012-11-01 13 views
5

Jeśli zmienię układ UICollectionView podczas zmiany orientacji, po kilku obrotach otrzymuję EXC_BAD_ACCESS.EXC_BAD_ACCESS na setCollectionViewLayout

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { 
    UICollectionViewLayout *layout = [[UICollectionViewFlowLayout alloc] init]; 
    self.myCollectionView.collectionViewLayout = layout; // This causes EXC_BAD_ACCESS after a few rotations 
} 

Czy to błąd UICollectionView? Czy robię coś złego? Jeśli to błąd, czy istnieje sposób na zmianę całego układu podczas zmiany orientacji?

Zauważyłem, że ten sam problem jest wymieniony w tym answer. Debugowanie za pomocą NSZombies nie generuje dodatkowych informacji.

+0

Czy kiedykolwiek to rozumiesz? Mam podobny problem ze zmianą układu, używając '[collectionView setCollectionViewLayout: layout animated: animated]'. Śledzenie wygląda następująco: '* wątek # 1: tid = 0x1c03, 0x01780098 libobjc.A.dylib \ objC_msgSend + 12, stop powód = EXC_BAD_ACCESS (kod = 1, adres = 0xc0000000) ramka # 0: 0x01780098 libobjc.A. dylib \ 'objc_msgSend + 12 ramki # 1: 0x008f6ed5 UIKit \' - [_setLayoutAttributes UICollectionViewData: atGlobalItemIndex:] + 62 ramki # 2: 0x008f80f6 UIKit \ '__45- [UICollectionViewData validateLayoutInRect:] _ block_invoke_0 + 1004' – Gujamin

+0

prawdopodobnie związane http : //stackoverflow.com/questions/15786084/uicollectionview-bad-acces-on-uicollectionviewdata-setlayoutattributesatlo, również wciąż otwarte. –

+0

Czy istnieje UIDynamicAnimator przy użyciu tego układu, przez przypadek? (** Edycja: ** Przypuszczam, że nie, jeśli został opublikowany 10 miesięcy temu.) –

Odpowiedz

1

Nie całkiem pewien, że to ma coś wspólnego, ale Release Notes for iOS 6 powiedzieć:

willRotateToInterfaceOrientation:duration:, willAnimateRotationToInterfaceOrientation:duration: i didRotateFromInterfaceOrientation: metody nie są już nazywane na dowolnym kontrolerze widok sprawia, że ​​prezentację na pełnym ekranie w ciągu samo - dla przykładu , presentViewController:animated:completion:

Powinieneś się upewnić, że twoje aplikacje nie używają tych metod do zarządzania układem dowolnych podgrup. Zamiast tego powinny one korzystać z metody kontrolera widoku i dostosowywać układ za pomocą prostokąta widoku widoku.

Ponieważ używasz UICollectionViewbyć może to ma coś wspólnego, że używasz tej metody, aby zmienić jej układ.

+0

Uważam, że tak nie jest, ponieważ kontroler widoku jest głównym kontrolerem widoku i nie jest prezentowany za pośrednictwem presentViewController: animated: completion :. – hpique

Powiązane problemy