2015-03-01 6 views
0

Привет, я создаю UICollectionView от xib. И это мой .h классUIcollection view, не получающий источники данных вызовов

@interface ArtistViewController : <UIViewController<UICollectionViewDataSource,UICollectionViewDelegate> 

@property (retain, nonatomic) IBOutlet UICollectionView *collectionview; 

в моем .mViewDidloadmethod я это

[collectionview setBackgroundColor:[UIColor clearColor]]; 

Мои источники данных и делегаты, как этот

- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { 
return [dataArray count]; 
} 



- (NSInteger)numberOfSectionsInCollectionView: (UICollectionView *)collectionView { 
return 1; 
} 





- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{ 
    static NSString *identifier = @"CollectionViewCell"; 

CollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:identifier forIndexPath:indexPath]; 


//artist = [arrayClass.mutArrayArtists objectAtIndex:indexPath.row]; 
UIImageView *recipeImageView = (UIImageView *)[cell viewWithTag:100]; 
if([[dataArray objectAtIndex:indexPath.row] valueForKey:@"thumbImage"]!=nil){ 


    recipeImageView.image=[[dataArray objectAtIndex:indexPath.row] valueForKey:@"thumbImage"]; 
} 
else 
{ 
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 
     NSURL *imageURL = [NSURL URLWithString:[[dataArray objectAtIndex:indexPath.row] valueForKey:@"thumbUrl"]]; 
     NSData *imageData = [NSData dataWithContentsOfURL:imageURL]; 
     UIImage *image = [UIImage imageWithData:imageData]; 
     dispatch_async(dispatch_get_main_queue(), ^{ 
      if(image!=nil){ 
       NSMutableDictionary *objectDict=[[NSMutableDictionary alloc] initWithDictionary:[dataArray objectAtIndex:indexPath.row]]; 
       [objectDict setObject:image forKey:@"thumbImage"]; 
       [dataArray replaceObjectAtIndex:indexPath.row withObject:objectDict]; 
      } 

      recipeImageView.image= image; 

     }); 
    }); 
} 



UILabel *lblArtistname=(UILabel *)[cell viewWithTag:102]; 
lblArtistname.text=[[dataArray objectAtIndex:indexPath.row] valueForKey:@"name"]; 

lblArtistname.lineBreakMode=NSLineBreakByWordWrapping; 
[lblArtistname setNumberOfLines:0]; 

CGSize maximumLabelSize = CGSizeMake(300,800); 
CGSize expectedLabelSize = [[lblArtistname text] sizeWithFont:lblArtistname.font 
              constrainedToSize:maximumLabelSize 
               lineBreakMode:[lblArtistname lineBreakMode]]; 
CGRect newframe=lblArtistname.frame; 
newframe.size.height=expectedLabelSize.height; 
newframe.size.width=300; 
[lblArtistname setFrame:newframe]; 


//UILabel *lblSongCount=(UILabel *)[cell viewWithTag:101]; 
// lblSongCount.text=artist.numberofSongs; 
return cell; 
} 

Но этого не получать вызов для любого источника данных метод. Почему это. Как я могу это решить. Пожалуйста, помогите мне.

Благодаря

ответ

0

В вашей раскадровке (или контроллер представления, если вы предпочитаете) установить DataSource и делегат точек на UICollectionView к контроллеру представления. Также похоже, что у вас есть тип в объявлении @interface.

@interface ArtistViewController : <UIViewController<UICollectionViewDataSource,UICollectionViewDelegate> 

должен быть

@interface ArtistViewController : UIViewController<UICollectionViewDataSource,UICollectionViewDelegate> 
1

В ом ViewDidloadmethod добавить

[self.collectionview setDelegate:self]; 
[self.collectionview setDataSource:self]; 

И исправить опечатку в первой строке как:

@interface ArtistViewController : UIViewController<UICollectionViewDataSource,UICollectionViewDelegate> 
Смежные вопросы