UICollectionView请求网络数据显示(Text)
TEXT:
AppDelegate.m
self.window.rootViewController = [[[UINavigationController alloc]initWithRootViewController:[RootViewController new]]autorelease];
RootViewController.m
#import "RootViewController.h" #import "ImageCell.h" #import "ImageURL.h" #define kImageCell @"imagecell" @interface RootViewController ()<UICollectionViewDataSource> @property(nonatomic,retain)NSMutableArray *dataSource;//存储model对象 @end
//释放 - (void)dealloc { self.dataSource = nil; [super dealloc]; } //懒加载 - (NSMutableArray *)dataSource{ if (_dataSource == nil) { self.dataSource = [NSMutableArray arrayWithCapacity:0]; } return [[_dataSource retain]autorelease]; }
- (void)viewDidLoad { [super viewDidLoad]; self.view.backgroundColor = [UIColor whiteColor]; //调用配置CollectionView [self confgureCollectionView]; //调用解析 [self readDataFromFile]; }
解析数据:
- (void)readDataFromFile{ //获取文件的路径 NSString *filePath = [[NSBundle mainBundle]pathForResource:@"Data.json" ofType:nil]; //使用文件的初始化NSData对象 NSData *data = [NSData dataWithContentsOfFile:filePath]; //使用json解析 NSMutableArray *sourceArray = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil]; // NSLog(@"%@",sourceArray); //遍历字典 for (NSDictionary *dic in sourceArray) { //创建model对象 ImageURL *URL = [[ImageURL alloc]init]; //添加到model [URL setValuesForKeysWithDictionary:dic]; //添加到数组 [self.dataSource addObject:URL]; NSLog(@"%@",self.dataSource); } }
配置CollectionView
//配置CollectionView - (void)confgureCollectionView{ //创建布局工具 UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc]init]; //设置item的大小 flowLayout.itemSize = CGSizeMake(140, 160); //设置分区缩进量 flowLayout.sectionInset = UIEdgeInsetsMake(5, 10, 5, 10); //创建CollectionView对象 UICollectionView *collectionView = [[UICollectionView alloc]initWithFrame:[UIScreen mainScreen].bounds collectionViewLayout:flowLayout]; //配置数据源代理 collectionView.dataSource = self; //注册cell [collectionView registerClass:[ImageCell class] forCellWithReuseIdentifier:kImageCell]; //设置背景颜色 collectionView.backgroundColor = [UIColor whiteColor]; //添加到父视图上 [self.view addSubview:collectionView]; [collectionView release]; [flowLayout release]; }
#pragma mark 数据源代理方法
//返回分区个数 - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{ return self.dataSource.count; } - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{ ImageCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:kImageCell forIndexPath:indexPath]; //根据item的下标取出对应位置的数据 ImageURL *url = self.dataSource[indexPath.item]; //调用cell控件赋值的方法 [cell assignValueByImageURL:url]; return cell; }
自定义cell:
<span style="font-size:24px;">//ImageCell.h #import <UIKit/UIKit.h> @class ImageURL; @interface ImageCell : UICollectionViewCell //写一个方法给cell上控件赋值 - (void)assignValueByImageURL : (ImageURL *)image; @end //ImageCell.m #import "ImageCell.h" #import "UIImageView+WebCache.h" #import "ImageURL.h" @interface ImageCell () @property(nonatomic,retain)UIImageView *photoView; @end @implementation ImageCell - (void)dealloc { self.photoView = nil; [super dealloc]; } - (id)initWithFrame:(CGRect)frame{ if (self = [super initWithFrame:frame]) { [self.contentView addSubview:self.photoView]; } return self; } - (UIImageView *)photoView{ if (_photoView == nil) { self.photoView = [[UIImageView alloc]initWithFrame:self.bounds]; self.photoView.backgroundColor = [UIColor cyanColor]; } return [[_photoView retain]autorelease]; } //写一个方法给cell上控件赋值 - (void)assignValueByImageURL : (ImageURL *)image{ //1.使用图片异步加载 [self.photoView sd_setImageWithURL:[NSURL URLWithString:image.thumbURL] placeholderImage:[UIImage imageNamed:@"占位1"]]; } @end</span>
建一个model数据类:
<span style="font-size:24px;">//ImageURL.h @interface ImageURL : NSObject @property(nonatomic,copy)NSString *thumbURL; @end //ImageURL.m #import "ImageURL.h" @implementation ImageURL - (void)dealloc { self.thumbURL= nil; [super dealloc]; } //防止Crash - (void)setValue:(id)value forUndefinedKey:(NSString *)key{ } @end</span>
效果展示:
图片占位:
------------------------------------------------------------------
Data文件下载:http://pan.baidu.com/s/1ntw5W3f
本节知识点:http://blog.csdn.net/qq_31810357/article/details/49154985
UICollectionView请求网络数据显示(Text)的更多相关文章
- react-native 项目实战 -- 新闻客户端(4) -- 请求网络数据
1.Home.js /** * 首页 */ import React, { Component } from 'react'; import { AppRegistry, StyleSheet, Te ...
- Android请求网络共通类——Hi_博客 Android App 开发笔记
今天 ,来分享一下 ,一个博客App的开发过程,以前也没开发过这种类型App 的经验,求大神们轻点喷. 首先我们要创建一个Andriod 项目 因为要从网络请求数据所以我们先来一个请求网络的共通类. ...
- Android 手机卫士--构建服务端json、请求网络数据
本文地址:http://www.cnblogs.com/wuyudong/p/5900384.html,转载请注明源地址. 数据的传递 客户端:发送http请求 http://www.oxx.com/ ...
- 安卓中自定义并使用Volley框架请求网络
大家好,今天我们讲一下如何使用Volley框架请求网络,为何要使用Volley框架,这就要先说一下使用Volley框架请求网络的优点了,volley是易于定制的,即你可以根据需求来设定volley框架 ...
- 使用innerHTML生成的script节点不会发出请求与执行text属性
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- 在Service服务中请求网络
一.startservice方式启动 第一次startservice启动服务的时候,会走oncreate和onstart方法, 第二次startservice启动服务的时候,会走onstart方法, ...
- Android - 使用Volley请求网络数据
Android - 使用Volley请求网络数据 Android L : Android Studio 14 个人使用volley的小记,简述使用方法,不涉及volley源码 准备工作 导入Volle ...
- 解决React Native使用Fetch API请求网络报Network request failed
问题来源: 1 . 在测试fetch数据请求时,Xcode9.0以上的无法请求https, 需要在Xcode中加载项目后修改Info.plist的相关配置,具体如下参考 问题及解决方法一模一样,不再重 ...
- 安卓请求网络错误 直接在main Thread 进行网络操作出现maintreamexception
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder() .detectDiskReads().detectDiskWrites ...
随机推荐
- 关于一些基础的Java问题的解答(七)
31. 反射的作用与原理 简单的来说,反射机制其实就是指程序在运行的时候能够获取自身的信息.如果知道一个类的名称或者它的一个实例对象, 就能把这个类的所有方法和变量的信息(方法名,变量名,方法,修饰符 ...
- 安装Leanote极客范的云笔记
前言 在这个互联网知识呈爆炸增长的时代,作为一个程序员要掌握的知识越来越多,然再好的记性也不如烂笔头,有了笔记我们就是可以时常扒拉扒拉以前的知识,顺便可以整理下自己的知识体系. 如今市面上云笔记产品, ...
- Asp.Net Core 2.0 项目实战(7)MD5加密、AES&DES对称加解密
本文目录 1. 摘要 2. MD5加密封装 3. AES的加密.解密 4. DES加密/解密 5. 总结 1. 摘要 C#中常用的一些加密和解密方案,如:md5加密.RSA加密与解密和DES加密等, ...
- CI数据库操作_查询构造器类
=================数据库操作======================1.数据库配置: config/database.php 用户名 密码 数据库 2 加载数据库类:$this-& ...
- [HCNA]VLAN配置Hybrid接口
实验名称 VLAN配置Hybrid接口 日期 2018年4月13日 实验目的 1.掌握配置Hybrid接口的方法. 2.理解Hybrid接口处理Untagged数据帧过程 3.理解Hybrid接口处理 ...
- IO复制多级目录 控制台输入文件目录然后把目录下java文件复制到 D: 并统计java个数
package cn.itcast_05; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; impor ...
- vim 基本命令入门
简介 vim是Linux 系统下类似于Windows的记事本的编辑器. vim 中经常使用的三种模式 一般模式:浏览文件内容. 插入模式:编辑文件内容. 底行模式:进行保存编辑内容,退出等操作. 基本 ...
- Java第2次实验提纲(Java基本语法与类库)
1. 使用Git克隆(clone)项目到你的Eclipse项目中 见以下参考资料中的3 从码云将项目clone到你的电脑 重要提示: 使用Git来管理你的代码以后,当你在本机Eclipse项目中开始编 ...
- JVM初探- 内存分配、GC原理与垃圾收集器
JVM初探- 内存分配.GC原理与垃圾收集器 标签 : JVM JVM内存的分配与回收大致可分为如下4个步骤: 何时分配 -> 怎样分配 -> 何时回收 -> 怎样回收. 除了在概念 ...
- 给PLSQL插上飞翔的翅膀-PLSQL优化
60-80% of database performance issues are related to poorly performing SQL,60-80%的数据库性能问题要归结于生产中糟糕的S ...