自定cell(XIB)团购思路
自定cell(XIB)团购思路
步骤一、先解析plist文件,创建model层数据。
*)dict
{
self = [super
init];
if (self) {
[self
setValuesForKeysWithDictionary:dict];
}
return
self;
}
+ (instancetype)tgWithDict:(NSDictionary
*)dict
{
return [[self
alloc]
initWithDict:dict];
}
+ (NSMutableArray
*)tgs
{
NSArray *array = [NSArray
arrayWithContentsOfFile:[[NSBundle
mainBundle]
pathForResource:@"tgs.plist"
ofType:nil]];
NSMutableArray *arrayM = [NSMutableArray
array];
for (NSDictionary
*dict
in array) {
[arrayM
addObject:[self
tgWithDict:dict]];
}
return arrayM;
}
创建XIB文件,并设置控件内部细节。
2>
创建一个与XIB同名的类,注意自己定义的类继承自的对象,要与XIB中根对象的类保持一致。
3>
又一次指定XIB中的根类,打开助理编辑器辅助观察变化。
4>
对须要改动属性的控件做IBOutlet连线,注意,不要与TableViewCell的已经存在的属性重名
连线控件的名称不能是:
(1) textLabel
(2) detailTextLabel
(3) imageView
*)tableView
{
// 1.
可重用标示符
static
NSString *ID =
@"Cell";
// 2. tableView查询可重用Cell
HMTgCell *cell = [tableView
dequeueReusableCellWithIdentifier:ID];
// 3.
假设没有可重用cell
if (cell ==
nil) {
NSLog(@"载入XIB");
//
从XIB载入自己定义视图
cell = [[[NSBundle
mainBundle]
loadNibNamed:@"HMTgCell"
owner:nil
options:nil]
lastObject];
}
return cell;
}
- (void)setTg:(HMTg
*)tg
{
// setter方法中,第一句要赋值,否则要在其它方法中使用模型,将无法訪问到
_tg = tg;
self.titleLabel.text
= tg.title;
self.iconView.image
= [UIImage
imageNamed:tg.icon];
self.priceLabel.text
= tg.price;
self.buyCountLabel.text
= tg.buyCount;
}
#pragma mark -
模板提供的方法
/**
初始化方法
使用代码创建Cell的时候会被调用,假设使用XIB或者Storyboard。此方法不会被调用
*/
- (id)initWithStyle:(UITableViewCellStyle)style
reuseIdentifier:(NSString
*)reuseIdentifier
{
self = [super
initWithStyle:style
reuseIdentifier:reuseIdentifier];
if (self) {
NSLog(@"%s", __func__);
}
return
self;
}
/**
从XIB被载入之后,会自己主动被调用,假设使用纯代码。不会被运行
*/
- (void)awakeFromNib
{
NSLog(@"%s", __func__);
self.contentView.backgroundColor
= [UIColor
clearColor];
}
/**
Cell
被选中或者取消选中是都会被调用
假设是自己定义Cell控件,全部的子控件都应该加入到contentView中
*/
- (void)setSelected:(BOOL)selected
animated:(BOOL)animated
{
[super
setSelected:selected
animated:animated];
if (selected) {
self.contentView.backgroundColor
= [UIColor
redColor];
}
else {
self.contentView.backgroundColor
= [UIColor
greenColor];
}
}
数据源方法
- (NSInteger)tableView:(UITableView
*)tableView numberOfRowsInSection:(NSInteger)section
{
return
self.tgs.count;
}
- (UITableViewCell
*)tableView:(UITableView
*)tableView cellForRowAtIndexPath:(NSIndexPath
*)indexPath
{
// 1.
创建cell
HMTgCell *cell = [HMTgCell
cellWithTableView:tableView];
// 2.
通过数据模型。设置Cell内容,能够让视图控制器不须要了解cell内部的实现细节
cell.tg
=
self.tgs[indexPath.row];
return cell;
}
{
return [[[NSBundle
mainBundle]
loadNibNamed:@"HMTgFooterView"
owner:nil
options:nil]
lastObject];
}
- (IBAction)loadMore
{
NSLog(@"载入很多其它");
// 1.
隐藏button
self.loadMoreButton.hidden
=
YES;
// 2.
显示提示视图
self.tipsView.hidden
=
NO;
// 3.1
推断代理是否实现了协议方法
if ([self.delegate
respondsToSelector:@selector(tgFooterViewDidDownloadButtonClick:)])
{
[self.delegate
tgFooterViewDidDownloadButtonClick:self];
}
}
/**
视图控制器刷新完毕调用方法
*/
- (void)endRefresh
{
// 4.
载入完毕数据
self.loadMoreButton.hidden
=
NO;
self.tipsView.hidden
=
YES;
}
HMTgFooterViewDelegate <NSObject>
@optional
/**
视图的下载button被点击
*/
- (void)tgFooterViewDidDownloadButtonClick:(HMTgFooterView
*)footerView;
@end
*)footerView
{
//
模拟取网络上获取数据载入数据
NSLog(@"努力载入数据中....");
dispatch_after(dispatch_time(DISPATCH_TIME_NOW,
(int64_t)(2.0
*
NSEC_PER_SEC)),
dispatch_get_main_queue(), ^{
//
获得网络数据之后运行的操作
//
向数组中加入数据,模拟网络载入完毕之后的效果
NSDictionary *dict =
@{@"title":
@"哈哈",
@"icon":
@"ad_00",
@"price":
@"100.2",
@"buyCount":
@"250"};
HMTg *tg = [HMTg
tgWithDict:dict];
NSLog(@"加数据前
%d",
self.tgs.count);
[self.tgs
addObject:tg];
NSLog(@"加数据后
%d",
self.tgs.count);
//
刷新数据
// [self.tableView reloadData];
//
新建一个indexPath
NSIndexPath *path = [NSIndexPath
indexPathForRow:(self.tgs.count
-
1)
inSection:0];
[self.tableView
insertRowsAtIndexPaths:@[path]
withRowAnimation:UITableViewRowAnimationMiddle];
//
通知页脚视图调整视图显示状态
[footerView
endRefresh];
});
}
自定cell(XIB)团购思路的更多相关文章
- AJ学IOS(16)UI之XIB自定义Cell实现团购UI
AJ分享,必须精品 先看效果图 自定义Cell 本次主要是自定义Cell的学习 实现自定义Cell主要有三种方法:按照使用的频繁度排序: XIB > 纯代码 > StoryBoard XI ...
- iOS开发——UI进阶篇(二)自定义等高cell,xib自定义等高的cell,Autolayout布局子控件,团购案例
一.纯代码自定义等高cell 首先创建一个继承UITableViewCell的类@interface XMGTgCell : UITableViewCell在该类中依次做一下操作1.添加子控件 - ( ...
- IOS第八天(2:UITableViewController团购,点击底部,xib加载更多, 代理模式)
******* HMViewController.h #import "HMViewController.h" #import "HMTg.h" #import ...
- iOS开发UI篇—使用xib自定义UItableviewcell实现一个简单的团购应用界面布局
iOS开发UI篇—使用xib自定义UItableviewcell实现一个简单的团购应用界面布局 一.项目文件结构和plist文件 二.实现效果 三.代码示例 1.没有使用配套的类,而是直接使用xib文 ...
- [iOS基础控件 - 6.6.1] 展示团购数据代码
1.主控制器: // // ViewController.m // GroupPurchase // // Created by hellovoidworld on 14/12/3. // Cop ...
- [iOS基础控件 - 6.6] 展示团购数据 自定义TableViewCell
A.需求 1.头部广告 2.自定义cell:含有图片.名称.购买数量.价格 3.使用xib设计自定义cell,自定义cell继承自UITableViewCell 4.尾部“加载更多按钮”,以及其被点击 ...
- iOS UI基础-9.1 UITableView 团购
概述 接下来,我们要做的是团购界面的设计,最张要实现的效果图及项目结构图 团购数据的展示 思路: 系统自带的tableCell不能展示三个文本,不能满足条件,自定义tableCell 每一个 ...
- iOS开发:一个高仿美团的团购ipad客户端的设计和实现(功能:根据拼音进行检索并展示数据,离线缓存团购数据,浏览记录与收藏记录的批量删除等)
大致花了一个月时间,利用各种空闲时间,将这个客户端实现了,在这里主要是想记录下,设计的大体思路以及实现过程中遇到的坑...... 这个项目的github地址:https://github.com/wz ...
- swift项目-模仿团购(主界面的搭建,以及首页的一些细节)
以前学习oc的时候写的一个团购的项目,现在学习swift,拿来用swift写一遍,也是连猜带蒙的,一点一点的往上凑. 今天主要是把主要的架子搭起来了. 主要有:UITabBarController,U ...
随机推荐
- Elasticsearch之CURL命令的DELETE
也可以看我写的下面的博客 Elasticsearch之curl删除 Elasticsearch之curl删除索引库 删除,某一条数据,如下 [hadoop@master elasticsearch-] ...
- zblog实现后台导航栏增加链接功能的最简单方法
首先在ftp中找到这个目录 zb_system/admin/ 然后找到 admin_top.php 这个文件 再然后找到这行代码 <?php ResponseAdm ...
- 转:java中static、final、static final的区别
http://blog.csdn.net/qq1623267754/article/details/36190715 final可以修饰:属性,方法,类,局部变量(方法中的变量) final修饰的属性 ...
- getdlgitemtext
获取控件内信息 set 设置控件内信息 oninitdialog初始化控件时的操作
- ionic下拉多项选择
1.npm install ion-multi-picker --save 2.引入 import { MultiPickerModule } from 'ion-multi-picker'; imp ...
- css中有些属性的前面会加上“*”或“_(兼容IE浏览器)
给不同浏览器识别: color{ background-color: #CC00FF; /*所有浏览器都会显示为紫色*/ background-color: #FF0000\9; /*IE6.IE7. ...
- LDAP个人理解
在新的公司办公,所有的后台系统或文档系统都公用一个LDAP账号. 接触到这个新名词,就查了一下,谈谈个人理解: LDAP是个协议, 简单地说,可以把LDAP服务理解为一套存放你账户密码的数据库系统.市 ...
- C语言实现截屏
实现手机控制电脑执行部分功能需要获取桌面状态,在网上找的一段截屏代码 /** * GDI 截屏函数 * 参数 hwnd 要截屏的窗口句柄 * 参数 dirPath 截图存放目录 * 参数 filena ...
- Maximum Value(unique函数,lower_bound()函数,upper_bound()函数的使用)
传送门 在看大佬的代码时候遇到了unique函数以及二分查找的lower_bound和upper_bound函数,所以写这篇文章来记录以备复习. unique函数 在STL中unique函数是一个去重 ...
- [luogu4728 HNOI2009] 双递增序列 (dp)
传送门 Solution 前几天刚做了类似题,这种将一个序列拆分为两个单调序列的题一般都是设\(dp[i]\)表示i为一个单调序列的末尾时,另一个序列的末尾是多少 然后应用贪心的思想,在这道题中就是让 ...