2015-03-28 4 views
1

Я до сих пор использовал UITableViews успешно, но я не могу заставить UICollectionView работать.Как зарегистрировать пользовательский CollectionViewCell?

@interface NewsCollectionViewDataSource : NSObject <UICollectionViewDataSource, UICollectionViewDelegate> 

-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath 
{ 
    TNCollectionViewCell *newscell = nil; 
    newscell = [collectionView dequeueReusableCellWithReuseIdentifier:newsCellReuseIdentifier forIndexPath:indexPath]; 
    if (!newscell) { 
     [[NSBundle bundleForClass:[self class]] loadNibNamed:@"TNCollectionViewCell" owner:self options:nil]; 
    } 
    newscell.newsLabel.text = [[self newsForIndexPath:indexPath] headLine]; 
    return newscell; 
} 

Everytime я получаю каждый раз к линии:

newscell.newsLabel.text = [[self newsForIndexPath:indexPath] headLine]; 

newscell равна нулю.

Я регистрирую его неправильно?

+1

Где зарегистрирован звонок? –

+0

У меня создалось впечатление, что линия, начинающаяся с '[[NSBundle bundleForClass', позаботится об этом. – Houman

ответ

2

Где-то перед извлечением клеток для collectionView (т.е. в viewDidLoad) вызовите следующий метод UICollectionView

- (void)registerNib:(UINib *)nib forCellWithReuseIdentifier:(NSString *)identifier; 

В вашем случае это будет что-то вроде этого:

[self.collectionView registerNib:[UINib nibWithNibName:@"TNCollectionViewCell" bundle:nil] 
     forCellWithReuseIdentifier:newsCellReuseIdentifier]; 

, а затем будет нет необходимости в следующем коде:

if (!newscell) { 
    [[NSBundle bundleForClass:[self class]] loadNibNamed:@"TNCollectionViewCell" owner:self options:nil]; 
} 
+0

Спасибо. Сейчас я совершенно смущен. Я следую книге «Испытательное развитие» Грэма Ли, и он использует только последнюю строку. См. Его github: https://github.com/iamleeg/BrowseOverflow/blob/edf96c7a229c6ba38e0236ddc15041196b789841/BrowseOverflow/QuestionListTableDataSource.m#L34 Как это возможно? – Houman

+0

@Houman, как я понял, этот код в последний раз был отредактирован 22 ноября 2011 года, поэтому он слишком стар, чтобы использоваться в качестве современного гида – Azat

+0

@ У вас проблема решена? – Azat

Смежные вопросы