IOS菜鸟的所感所思(四)——自定义UICollectionViewCell以及网络数据的添加。
来源:互联网 发布:ps软件如何放大 编辑:程序博客网 时间:2024/06/01 10:14
如何把已经获取到的数据放在控制器的cell中显示出来,下面我们就来实现自定义UICollectionViewCell,然后再向里添加网络获取的数据。
一:UI设计
二:代码编写
SearchSongVC.h文件中:
#import <UIKit/UIKit.h>
@interface SearchSongVC :UIViewController
@end
SearchSongVC.m文件中:
定义私有变量:
//定义cell的标识符
NSStringstatic *reuseIdentifier =@"cell";
//需要用到的协议中的方法,即UICollectionView中的协议。
@interface SearchSongVC ()<UICollectionViewDataSource,UICollectionViewDelegate>
//UI界面引出的接口
@property (weak, nonatomic) IBOutletUITextField *searchContent;
@property (weak, nonatomic) IBOutletUICollectionView *collectionView;
//定义网络的对象,用于获取数据。
@property (nonatomic,strong)FetchDataFromNet *fetchData;
//定义本地中的数组用于存放获取后的数据。
@property (nonatomic,strong)NSArray *getDataArray;
代码实现歩聚:
- (void)getData:(NSString *)name page:(NSInteger)pageIndex{
[FetchDataFromNetfetchMusicData:namepage:pageIndexcallback:^(NSArray *array,NSInteger page,NSError *error){
if (error) {
NSLog(@"error = %@",error);
}else{
//初始化本地的数组,并重新加载数据。
self.getDataArray = array;
[self.collectionView reloadData];
// NSLog(@"%@",_getDataArray);
}
}];
}
//点击search按钮后调用的方法。
- (IBAction)searchSongs:(UIBarButtonItem *)sender {
if (self.searchContent.text) {
//调用获取数据的方法,key是用户输入的内容。
[self getData:self.searchContent.textpage:1];
}
}
3.实现协议中的方法。#pragma mark <UICollectionViewDataSource>
//section的个数。
- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView {
return1;
}
//cell的个数,本地数组的长度。
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
return self.getDataArray.count;
}
//初始化cell,但需要在viewDidLoad方法中注册,并说明自己是协议的委托。
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
//cell是自定义的对象,
CollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:reuseIdentifier forIndexPath:indexPath];
//调用对象方法,初始化数据。(需要在CollectionViewCell.m文件中实现次方法),而参数是getDataArray中的一个musicData的对象,而该对象有trackname,albumname,logoname等属性。
[cell setInfo:self.getDataArray[indexPath.row]];
return cell;
}
- (void)viewDidLoad {
[superviewDidLoad];
//说明自己是协议的委托。
self.collectionView.delegate =self;
self.collectionView.dataSource =self;
//注册。
UINib *cellNib = [UINibnibWithNibName:@"collectionCell"bundle:[NSBundlemainBundle]];
[self.collectionViewregisterNib:cellNibforCellWithReuseIdentifier:reuseIdentifier];
}
//cell的长宽。
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
returnCGSizeMake(self.view.frame.size.width,45);
}
4.在自定义cell中实现数据的初始化。CollectionViewCell.m文件中:
@property (weak, nonatomic) IBOutletUIImageView *logoImage;
@property (weak, nonatomic) IBOutletUILabel *songName;
@property (weak, nonatomic) IBOutletUILabel *albumName;
//实现共有的api方法。
- (void)setInfo:(MusicData *)musicData{
//初始化数据
self.songName.text = musicData.trackname;
self.albumName.text = musicData.albumname;
//因为加载图片是耗时的操作,所以此处需要线程的异步操作
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0), ^{
//获取图片的网络地址,并进行加载。
NSURL *imageUrl = [NSURLURLWithString:musicData.logoname];
// NSData *imageData = [NSData dataWithContentsOfURL:imageUrl];
// UIImage *image = [UIImage imageWithData:imageData];
// [self setImage:image];
//这里我调用了第三方库UIImageView+WebCache.h下载:点击打开链接 当然在导入库的时候要导完全。
[self.logoImagesd_setImageWithURL:imageUrlplaceholderImage:[UIImageimageNamed:@"surf.jpg"]];
});
}
- IOS菜鸟的所感所思(四)——自定义UICollectionViewCell以及网络数据的添加。
- IOS菜鸟的所感所思(七)——获取网络图片并添加
- IOS菜鸟的所感所思(六)——网络歌曲的播放与kvo模式
- IOS菜鸟的所感所思(八)——coreData与网络歌曲的本地化
- IOS菜鸟的所感所思(十三)——数据的图形化
- IOS菜鸟的所感所思(三)——通过服务器接口获取数据
- IOS菜鸟的所感所思(十四)——解析专辑获得专辑中的歌曲以及图片的优化
- IOS菜鸟的所感所思——UITableView中数据之间的顺序与反向传递
- IOS菜鸟的所感所思(十)——专辑接口和专辑中歌曲数据的获得(上)
- IOS菜鸟的所感所思(十二)——专辑接口和专辑中歌曲数据的获得(下)
- IOS菜鸟的所感所思(五)——对歌曲地址的获取与解析
- IOS菜鸟的所感所思(十五)—— UIScrollView和UIPageControl的组合
- IOS菜鸟的所感所思(十六)—— 立体式的切换视图
- IOS菜鸟的所感所思(二)——UIKit中的UIDynamicAnimator
- IOS菜鸟的所感所思(九)——收藏视图的创建并对cell的初始化
- IOS菜鸟的所感所思(十一)——统计文本中单词出现的次数并按照次数高低排序
- 自定义UICollectionViewCell 以及碰到的问题
- IOS中UICollectionViewCell的问题
- 历史消息
- Apache apxs 扩展工具的安装
- centos下配置rsyncd服务器
- javascript中的闭包
- 黑马程序员----集合框架(二)
- IOS菜鸟的所感所思(四)——自定义UICollectionViewCell以及网络数据的添加。
- Sublime Text 2 配置记录
- synchronized和volatile比较
- 最大流模板
- iOS开发系列--触摸事件、手势识别、摇晃事件、耳机线控
- 理解restFul架构---之认识
- linux基础
- (15.1.5)无聊的时候我们就去翻妹子们的微博
- iOS开发系列--视图切换