2012-11-01 28 views
5

Bir yön değiştirme sırasında UICollectionView düzenini değiştirirseniz, birkaç döndürme sonrasında EXC_BAD_ACCESS alırım.EXC_BAD_ACCESS 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 
} 

Bu bir UICollectionView hatası mı? Yoksa yanlış bir şey mi yapıyorum? Bir hata ise, yönelim değişikliği sırasında tüm düzeni değiştirmek için herhangi bir yolu var mı?

Aynı sorunun bu answer numaralı belgede belirtildiğini fark ettim. NSZombies ile hata ayıklama ek bilgi üretmez.

+0

Hiç bunu anladın mı? '[CollectionView setCollectionViewLayout: layout animated: animated] 'kullanarak düzeni değiştirmeyle benzer bir sorun yaşıyorum. Backtrace şöyle görünür: '* iş parçacığı # 1: tid = 0x1c03, 0x01780098 libobjc.A.dylib \' objc_msgSend + 12, durdurma nedeni = EXC_BAD_ACCESS (kod = 1, adres = 0xc0000000) çerçeve # 0: 0x01780098 libobjc.A. dylib \ 'objc_msgSend + 12 çerçeve 1: 0x008f6ed5 UIKit \' - [UICollectionViewData _setLayoutAttributes: atGlobalItemIndex:] + 62 çerçeve 2: 0x008f80f6 UIKit \ '__45- [UICollectionViewData validateLayoutInRect:] _ block_invoke_0 + 1004' – Gujamin

+0

Muhtemelen http ilişkin : //stackoverflow.com/questions/15786084/uicollectionview-bad-acces-on-uicollectionviewdata-setlayoutattributesatglo, ayrıca hala açık. –

+0

Bu düzeni kullanarak bir UIDynamicAnimator var mı? (** Düzenleme: ** Sanırım 10 ay önce gönderildiyse, sanırım.) –

cevap

1

oldukça emin değil o bir ilgisi vardır ama Release Notes for iOS 6 ki:

willRotateToInterfaceOrientation:duration:, willAnimateRotationToInterfaceOrientation:duration: ve didRotateFromInterfaceOrientation: yöntemler artık tam ekran sunum üzerinde kılan herhangi görünüm denetleyicisinde denir kendisi — için örnek,Uygulamalarınızın herhangi bir alt görüntünün düzenini yönetmek için bu yöntemleri kullanmadığından emin olmalısınız. Bunun yerine, görünüm denetleyicisinin viewWillLayoutSubviews yöntemini kullanmalı ve görünümü, görünümün sınır dikdörtgenini kullanarak ayarlamalıdır.

bunu onun düzenini değiştirmek için bu yöntemi kullandığınızı ilgisi vardır UICollectionViewbelki kullandığımız için.

+0

Söz konusu görüntü denetleyicisinin ana görünüm denetleyicisi olduğu ve presentViewController: sunumu: tamamlama: ile sunulmadığı için durumun böyle olmadığına inanıyorum. – hpique

İlgili konular