gpt4 book ai didi

ios - UIcollectionview 未获取调用数据源

转载 作者:行者123 更新时间:2023-11-29 02:15:34 24 4
gpt4 key购买 nike

你好,我正在从 xib 创建一个 UICollectionView。这是我的 .h

@interface ArtistViewController : <UIViewController<UICollectionViewDataSource,UICollectionViewDelegate>

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

在我的.m ViewDidloadmethod中我这样做了

[collectionview setBackgroundColor:[UIColor clearColor]];

我的数据源和委托(delegate)是这样的

- (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;
}

但这没有调用任何数据源方法。这是为什么。我该如何解决这个问题。请帮助我。

谢谢

最佳答案

在 .m ViewDidloadmethod 添加这个

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

并将第一行的拼写错误更正为:

@interface ArtistViewController :    UIViewController<UICollectionViewDataSource,UICollectionViewDelegate>

关于ios - UIcollectionview 未获取调用数据源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28789960/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com