IOS开发学习笔记030-xib实现淘宝界面

使用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界面的操作

头文件

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

源文件

 1 //
 2 //  NewCell.m
 3 //  UITableViewCell-xib实现
 4 //
 5 //  Created by Christian on 15/5/21.
 6 //  Copyright (c) 2015年 slq. All rights reserved.
 7 //
 8
 9 #import "NewCell.h"
10 #import "Shops.h"
11
12 @implementation NewCell
13
14 - (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
15 {
16     self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
17     if (self) {
18         // Initialization code
19     }
20     return self;
21 }
22
23 - (void)awakeFromNib
24 {
25     // Initialization code
26 }
27
28 - (void)setSelected:(BOOL)selected animated:(BOOL)animated
29 {
30     [super setSelected:selected animated:animated];
31
32     // Configure the view for the selected state
33 }
34 // 返回NewCell对象
35 + (id)newCell
36 {
37     // 加载xib文件
38     return [[NSBundle mainBundle] loadNibNamed:@"NewCell" owner:nil options:nil][0];
39 }
40 // 重写setShop方法
41 - (void)setShop:(Shops *)shop
42 {
43     // 标题
44     self.name.text = shop.name;
45     // 图片
46     self.icon.image = [UIImage imageNamed:shop.icon];
47     // 描述
48     self.desc.text = shop.desc;
49 }
50 // 返回标识
51 + (NSString *)ID
52 {
53     return @"CELL";
54 }
55 // 返回行高度
56 + (CGFloat)cellHeight
57 {
58     return 80;
59 }
60 @end

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

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

实现文件如下:

 1 //
 2 //  Shops.m
 3 //  UITableViewCell-xib实现
 4 //
 5 //  Created by Christian on 15/5/21.
 6 //  Copyright (c) 2015年 slq. All rights reserved.
 7 //
 8
 9 #import "Shops.h"
10
11 @implementation Shops
12
13 // 返回一个Shop对象
14 - (id)initWithDict:(NSDictionary *)dict
15 {
16     // 父类init
17     if(self = [self init])
18     {
19         // 赋值
20         self.name = dict[@"name"];
21         self.icon = dict[@"icon"];
22         self.desc = dict[@"desc"];
23     }
24     // 返回self
25     return self;
26 }
27
28 + (id)shopWithDict:(NSDictionary *)dict
29 {
30     return [[Shops alloc] initWithDict:dict];
31 }
32 @end

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

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

 1 -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
 2 {
 3     return _data.count;
 4 }
 5
 6 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
 7 {
 8     // 1、取出循环池中得cell
 9     NewCell *cell = [tableView dequeueReusableCellWithIdentifier:[NewCell ID]];
10     // 2、如果cell不空
11     if(cell == nil)
12     {
13         cell = [NewCell newCell];
14     }
15     // 3、设置cell内容
16     cell.shop = _data[indexPath.row];
17     return  cell;
18 }

还有plist文件的加载

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

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

欢迎关注个人订阅号:

时间: 2024-11-05 14:49:25

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

IOS开发学习笔记-(2)键盘控制,键盘类型设置,alert 对话框

一.关闭键盘,放弃第一响应者,处理思路有两种 ① 使用文本框的 Did End on Exit 绑定事件 ② UIControl on Touch 事件 都去操作 sender 的  resignFirstResponder #import <UIKit/UIKit.h> @interface ViewController : UIViewController @property (weak, nonatomic) IBOutlet UITextField *txtUserName; @pro

iOS开发学习笔记:基础篇

iOS开发需要一台Mac电脑.Xcode以及iOS SDK.因为苹果设备都具有自己封闭的环境,所以iOS程序的开发必须在Mac设备上完成(当然,黑苹果应该也是可以的,但就需要花很多的精力去折腾基础环境),Xcode是一个集成开发环境,包括了编辑器.调试.模拟器等等一系列方便开发和部署的工具,iOS SDK则是开发应用所必需,不同的SDK分别对应不同的iOS版本或设备,通常我们需要下载多个iOS SDK以确保我们开发的程序能够在不同版本的iOS上正常运行. 创建新工程 Xcode提供了很多种工程模

IOS开发学习笔记-(3) 进度条、等待动画开始停止

一.创建对应空间视图  ,如下图: 二.编写对应的 .h 代码,如下 : #import <UIKit/UIKit.h> @interface ViewController : UIViewController @property (weak, nonatomic) IBOutlet UIActivityIndicatorView *activWaitNetWork; @property (weak, nonatomic) IBOutlet UIProgressView *pgrsDownLo

IOS开发学习笔记(二)-语音识别(科大讯飞)

上次简单地讲解了如何利用科大讯飞完成语音合成,今天接着也把语音识别整理一下.当然,写代码前我们需要做的一些工作(如申请appid.导库),在上一篇语音合成的文章当中已经说过了,不了解的可以看看我上次的博文,那么这次直接从堆代码开始吧. 详细步骤: 1.导完类库之后,在工程里添加好用的头文件.在视图里只用了一个UITextField显示识别的内容,两个UIButton(一个开始监听语音,一个结束监听),然后引入类.添加代理,和语音合成的一样. MainViewController.h 1 #imp

IOS开发学习笔记(1)-----UILabel 详解

1. [代码][C/C++]代码     //创建uilabelUILabel *label1 = [[UILabel alloc] initWithFrame:CGRectMake(20, 40, 280, 80)];//设置背景色label1.backgroundColor = [UIColor grayColor];//设置taglabel1.tag = 91;//设置标签文本label1.text = @"Hello world!";//设置标签文本字体和字体大小label1.

IOS开发学习笔记(2)-----UIButton 详解

1. [代码][C/C++]代码     //这里创建一个圆角矩形的按钮    UIButton *button1 = [UIButton buttonWithType:UIButtonTypeRoundedRect];    //    能够定义的button类型有以下6种,//    typedef enum {//        UIButtonTypeCustom = 0,          自定义风格//        UIButtonTypeRoundedRect,        

IOS开发学习笔记--语音合成(科大讯飞)

      现在语音服务越来越热,我们平时使用的很多软件都带有语音合成和识别功能,用起来也很方便.说到语音服务,Google和微软都提供过API接口,不过笔者要介绍的是国内的智能语音技术提供商---科大讯飞.之前看过一个比较Google.微软和科大讯飞语音识别引擎的博文(http://fqctyj.blog.163.com/blog/static/70843455201361955322797/),有兴趣可以去看看.笔者接触语音服务的时间也不长,对语音服务也不是很了解,但是拆解过科大讯飞的Dem

IOS开发学习笔记017-什么是IOS开发

应用程序开发流程 1.IOS开发需要思考的问题 用户是谁?不同应用程序的内容和用户体验大不相同,这取决于想要编写的是什么应用程序,它可能是儿童游戏,也可能是待办事项列表应用程序,又或者是测试自己学习成果的应用程序. 应用程序的用途是什么?赋予应用程序一个明确的用途十分重要.了解激发用户使用应用程序的动因是界定用途的一个出发点. 应用程序尝试解决什么问题?应用程序应该完美解决单个问题,而不是尝试解决多个截然不同的问题.如果发现应用程序尝试解决不相关的问题,那么最好考虑编写多个应用程序. 应用程序要

ios开发学习笔记(1)

objective-c基础总结 第一二章 1.application:didiFinishLauchingWithOptions:程序启动后立即执行 2.启动界面代码格式:self.window = [UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];//1.从Infor.plist中取出版本号NString *version = [NSBundle mainBundle].infoDictionary[key];//2.