iOS 6.0, тестирование на iPhone 5
Я загружаю подкласс UICollectionViewController из пера. Когда я запускаю метод awakeFromNib, он утверждает, что представление загружено. Вызов collectionView возвращает nil.
Поэтому у меня возникла проблема с регистрацией пера, из которого нужно загружать мои ячейки.
- (void)awakeFromNib {
if ([self isViewLoaded])
NSLog(@"[%@ %@] registered with %@", NSStringFromClass([self class]), NSStringFromSelector(_cmd),
self.collectionView);
UINib *nib = [UINib nibWithNibName:@"MyCollectionCell" bundle:nil];
[self.collectionView registerNib:nib forCellWithReuseIdentifier:NIB_ID];
}
Вывод сверху:
2012-09-22 19:21:49.129 myApp[7182:907] [MyCollectionViewController awakeFromNib] registered with (null)
Также не вызываются loadView и viewDidLoad (ожидается при загрузке из ниба).
Я терплю неудачу при попытке загрузить ячейки.
Текущий обходной путь, избыточная регистрация nib в collectionView:cellForItemAtIndexPath::
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
UINib *nib = [UINib nibWithNibName:@"MyCollectionCell" bundle:nil];
[collectionView registerNib:nib forCellWithReuseIdentifier:NIB_ID];
Вопросы. Вы сталкивались с этим? Видишь ли ты ошибочность моих путей? Это известная ошибка?
Изменить: дополнительная информация…
взломав awakeFromNib, collectionView кажется недоступным
(lldb) po [self view]
(UIView *) $1 = 0x1f158400 <UICollectionView: 0x1f158400; frame = (0 0; 320 548); clipsToBounds = YES; opaque = NO; autoresize = W+H; gestureRecognizers = <NSArray: 0x1ed8fcf0>; layer = <CALayer: 0x1ed8f790>; contentOffset: {0, 0}> collection view layout: <UICollectionViewFlowLayout: 0x1ed919a0>
(lldb) po [self collectionView]
(UICollectionView *) $2 = 0x00000000 <nil>
изменение wakeFromNib для использования view вместо collectionView является лучшим обходным путем:
[(UICollectionView *)self.view registerNib:nib forCellWithReuseIdentifier:NIB_ID];
[self.collectionView registerClass:[MyPhotoCell class] forCellWithReuseIdentifier:@"rPhotoCell"]; [self.collectionView registerNib:[UINib nibWithNibName:@"MyPhotoCell" bundle:nil] forCellWithReuseIdentifier:@"rPhotoCell"];- person propstm   schedule 11.10.2012viewWillAppear:. - person bshirley   schedule 20.05.2014