使用xib文件实现界面,然后通过模型更新数据。

1、使得控制器继承自UITableViewController

2、创建xib文件,实现界面如下:一个UIImageView,两个lable

3、新建一个封装类NewCell,封装对xib界面的操作

4、新建一个模型类Shops对数据进行更新,读取字典数据到类中

5、在控制器中对模型数据进行操作,将结果显示到view中

1、使得控制器继承自UITableViewController

  更改main.storyboard的主界面是UITableViewController的class为SLQViewController

2、创建xib文件,实现界面如下:一个UIImageView,两个lable

指定NewCell的class为下面新建的NewCell类,这样可以拖线添加属性和方法。

3、新建一个封装类NewCell,封装对xib界面的操作

头文件

 //
// NewCell.h
// UITableViewCell-xib实现
//
// Created by Christian on 15/5/21.
// Copyright (c) 2015年 slq. All rights reserved.
// #import <UIKit/UIKit.h>
@class Shops; // 引用声明
@interface NewCell : UITableViewCell
@property (weak, nonatomic) IBOutlet UIImageView *icon; // 图标
@property (weak, nonatomic) IBOutlet UILabel *name; // 标题
@property (weak, nonatomic) IBOutlet UILabel *desc; // 描述 @property (nonatomic,strong) Shops *shop; // shop对象 + (id)newCell; // 返回NewCell对象
+ (NSString *)ID; // 返回标识
+ (CGFloat)cellHeight; // 返回cell高度
@end

源文件

 //
// NewCell.m
// UITableViewCell-xib实现
//
// Created by Christian on 15/5/21.
// Copyright (c) 2015年 slq. All rights reserved.
// #import "NewCell.h"
#import "Shops.h" @implementation NewCell - (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
// Initialization code
}
return self;
} - (void)awakeFromNib
{
// Initialization code
} - (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
[super setSelected:selected animated:animated]; // Configure the view for the selected state
}
// 返回NewCell对象
+ (id)newCell
{
// 加载xib文件
return [[NSBundle mainBundle] loadNibNamed:@"NewCell" owner:nil options:nil][];
}
// 重写setShop方法
- (void)setShop:(Shops *)shop
{
// 标题
self.name.text = shop.name;
// 图片
self.icon.image = [UIImage imageNamed:shop.icon];
// 描述
self.desc.text = shop.desc;
}
// 返回标识
+ (NSString *)ID
{
return @"CELL";
}
// 返回行高度
+ (CGFloat)cellHeight
{
return ;
}
@end

4、新建一个模型类Shops对数据进行更新,读取字典数据到类中

 //
// Shops.h
// UITableViewCell-xib实现
//
// Created by Christian on 15/5/21.
// Copyright (c) 2015年 slq. All rights reserved.
// #import <Foundation/Foundation.h> @interface Shops : NSObject
@property (nonatomic,copy) NSString *name; // 标题
@property (nonatomic,copy) NSString *desc; // 描述
@property (nonatomic,copy) NSString *icon; // 图标 + (id)shopWithDict:(NSDictionary *)dict; // 返回shop对象
- (id)initWithDict:(NSDictionary *)dict; // 自定义构造方法 @end

实现文件如下:

 //
// Shops.m
// UITableViewCell-xib实现
//
// Created by Christian on 15/5/21.
// Copyright (c) 2015年 slq. All rights reserved.
// #import "Shops.h" @implementation Shops // 返回一个Shop对象
- (id)initWithDict:(NSDictionary *)dict
{
// 父类init
if(self = [self init])
{
// 赋值
self.name = dict[@"name"];
self.icon = dict[@"icon"];
self.desc = dict[@"desc"];
}
// 返回self
return self;
} + (id)shopWithDict:(NSDictionary *)dict
{
return [[Shops alloc] initWithDict:dict];
}
@end

5、在控制器中对模型数据进行操作,将结果显示到view中

主要是这两个方法:设置行和行内容

 -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return _data.count;
} - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
// 1、取出循环池中得cell
NewCell *cell = [tableView dequeueReusableCellWithIdentifier:[NewCell ID]];
// 2、如果cell不空
if(cell == nil)
{
cell = [NewCell newCell];
}
// 3、设置cell内容
cell.shop = _data[indexPath.row];
return cell;
}

还有plist文件的加载

 - (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
_data = [NSMutableArray array];
//加载数据
NSArray *array = [NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"shops.plist" ofType:nil]];
for (NSDictionary *arr in array)
{
[_data addObject:[Shops shopWithDict:arr]];
}
// 设置行高度
self.tableView.rowHeight = [NewCell cellHeight];
}

源代码:http://pan.baidu.com/s/1kTswBjD

欢迎关注个人订阅号:

IOS开发学习笔记030-xib实现淘宝界面的更多相关文章

  1. iOS开发学习笔记:基础篇

    iOS开发需要一台Mac电脑.Xcode以及iOS SDK.因为苹果设备都具有自己封闭的环境,所以iOS程序的开发必须在Mac设备上完成(当然,黑苹果应该也是可以的,但就需要花很多的精力去折腾基础环境 ...

  2. ios开发学习笔记(1)

    objective-c基础总结 第一二章 1.application:didiFinishLauchingWithOptions:程序启动后立即执行 2.启动界面代码格式:self.window = ...

  3. IOS开发学习笔记042-UITableView总结2

    一.自定义非等高的cell         如常见的微博界面,有的微博只有文字,有的有文字和图片.这些微博的高度不固定需要重新计算. 这里简单说一下几种方法.前面的步骤和设置等高的cell一样.现在来 ...

  4. IOS开发学习笔记029-反选、全选、删除按钮的实现

    还是在上一个程序的基础上进行修改 1.反选按钮 2.全选按钮 3.删除按钮 4.其他代码优化 1.反选按钮 反选的过程就是将_deleteShops数组中得数据清空,然后将Shops中数组添加到_de ...

  5. ios开发学习笔记(这里一定有你想要的东西,全部免费)

    1,Search Bar 怎样去掉背景的颜色(storyboard里只能设置background颜色,可是发现clear Color无法使用). 其实在代码里还是可以设置的,那就是删除背景view [ ...

  6. iOS开发学习笔记

    1 常用的第三方工具 1.1 iPhone Simulator 测试程序需要模拟器iPhone Simulator 1.2 设计界面需要Interface Builder,Interface Buil ...

  7. (ios开发学习笔记一)ios项目文件结构

    转自:http://www.cnblogs.com/macroxu-1982/archive/2012/07/31/2616389.html 下面是单个窗体项目例子,我们从这个项目开始,说明ios项目 ...

  8. IOS开发学习笔记017-第一个IOS应用

    第一个IOS应用程序,就从最简单的开始吧. 1.先了解一下开发环境,Xcode的相关组成 2.还有模拟器 3.运行与停止按钮 4.新建一个工程 5.看看main函数里都有啥 6.现在来添加一个控件 1 ...

  9. IOS开发学习笔记041-UITableView总结1

    一.UITableView的常用属性 1.分割线 // 分割线 self.tableView.separatorColor = [UIColorredColor]; // 隐藏分割线 self.tab ...

随机推荐

  1. zabbix文档3.4-7配置

    zabbix文档3.4-7配置 1 主机和主机组 典型的Zabbix主机是您希望监视的设备(服务器,工作站,交换机等). 创建主机是Zabbix中首个监控任务之一.例如,如果要监视服务器"x ...

  2. C# linq根据自定义筛选条件和所对应的数值进行筛选

    在软件应用中有时候会出现这样的界面:上面是利用多选框和下拉框组合的筛选条件.下面表格展示筛选后的数据.如下图 上面是筛选条件,表格是根据筛选条件筛选的结果. 如果表格不支持筛选功能.可以利用Linq对 ...

  3. Samuraiwtf-解决sshd安装启动

    东西没仔细看就给别人了,具体是系统默认的sshd怎么都起不来.于是重新安装一下,过程如下 root@samuraiwtf:~# netstat -nlt Active Internet connect ...

  4. 输出流缓冲的意义 何时缓冲 Stdout Buffering

    From : https://eklitzke.org/stdout-buffering 译者:李秋豪 大多数编程语言默认提供了i/o缓冲特性,因为这会使得输出更加有效率.这些缓冲功能大都是默默工作& ...

  5. python_34_文件操作3

    f=open('yesterday',encoding='utf-8') print(f.tell())#文件句柄所在指针指向的位置,即光标在哪里(按字符计数) f.readline()#读一行 pr ...

  6. java基础面试题:请说出作用域public,private,protected,以及不写时的区别

    不写任何作用域(即访问权限)表示friendly public 公共,权限最大,作用域最大,在类内部.同一package.子孙类.其他package都可以访问 protected保护,在类内部.同一p ...

  7. iOS 控制section不悬停 --- iOS开发系列 ---项目中成长的知识八

    一般情况下,tableview中的section是会默认不随着tableview的滚动而滚动的,而是会等到属于这个section的cell滑完过后,然后往上顶(不知道大家能不能听懂=_=!) 有些时候 ...

  8. 第17题:打印1到最大的n位数

    面试题17:打印1到最大的n位数  题目:输入数字n,按顺序打印出从1最大的n位十进制数.比如输入3,则打印出1.2.3一直到最大的3位数即999. 考点: 用字符串或者数组表达一个大数. 思路 1. ...

  9. 线程池是什么?Java四种线程池的使用介绍

    使用线程池的好处有很多,比如节省系统资源的开销,节省创建和销毁线程的时间等,当我们需要处理的任务较多时,就可以使用线程池,可能还有很多用户不知道Java线程池如何使用?下面小编给大家分享Java四种线 ...

  10. 正则表达式通用匹配ip地址及主机检测

    在使用正则表达式匹配ip地址时如果不限定ip正确格式,一些场景下可能会产生不一样的结果,比如ip数值超范围,ip段超范围等,在使用正则表达式匹配ip地址时要注意几点: 1,字符界定:使用  \< ...