本文主要是介绍iOS经验4:自定义TableViewCell应用代码例子过程 时间戳,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
不用,镔哥多说了,TAbleView在工程项目应用得应该是最多的,但是系统自带的不能满足我的需求,所以在做项目的时候一般都要自定义UITableViewCell来实现我们的目的:
下面首先我把自己的项目的一个代码做为例子介绍:
//
// RecordTableViewCell.h
// 自定义一个商品历史纪录
// Created by bin on 14/10/31.
// Copyright (c) 2014年 mac. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface RecordTableViewCell : UITableViewCell
@property (nonatomic, strong) UILabel * timeLable;//时间
@property (nonatomic, strong) UILabel * IDLabel;//ID号
@property (nonatomic, strong) UILabel * numberLabel;//购买数量
- (void)getDataByDictionary:(NSDictionary *)dic;
@end
// RecordTableViewCell.m
//
// Created by bin on 14/10/31.
// Copyright (c) 2014年 mac. All rights reserved.
//
#import "RecordTableViewCell.h"
#define BACKCOLOR [UIColor cyanColor]
@implementation RecordTableViewCell
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
self.timeLable = [[UILabel alloc] initWithFrame:CGRectMake(10, 10, 120, 20)];
_timeLable.font = [UIFont systemFontOfSize:12];
_timeLable.backgroundColor = BACKCOLOR;
[self addSubview:_timeLable];
self.IDLabel = [[UILabel alloc] initWithFrame:CGRectMake(_timeLable.right, _timeLable.top, 80, _timeLable.height)];
_IDLabel.backgroundColor = BACKCOLOR;
_IDLabel.textAlignment = NSTextAlignmentCenter;
[self addSubview:_IDLabel];
self.numberLabel = [[UILabel alloc] initWithFrame:CGRectMake(_IDLabel.right, _IDLabel.top, 110, _IDLabel.height)];
_numberLabel.backgroundColor = BACKCOLOR;
_numberLabel.font = [UIFont systemFontOfSize:14];
_numberLabel.tintColor = [UIColor colorWithRed:165 green:3 blue:16 alpha:1];
[self addSubview:_numberLabel];
}
return self;
}
//购买的时间
- (void)getDataByDictionary:(NSDictionary *)dic
{
self.timeLable.text = [self getTImeBytimestampString:[dic objectForKey:@"joinTime"]];
self.IDLabel.text = [dic objectForKey:@"joinerPhone"];
self.numberLabel.text = [NSString stringWithFormat:@"购买了%@人次", [dic objectForKey:@"joinCount"]];
}
//根据时间戳返回时间
- (NSString *)getTImeBytimestampString:(NSString *)timstampStr
{
NSDate * date = [NSDate dateWithTimeIntervalSince1970:[timstampStr longLongValue] / 1000];
NSDateFormatter * formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"YYYY-MM-dd HH:mm:ss"];
NSString * str = [NSString stringWithFormat:@"%@", [formatter stringFromDate:date]];
return str;
}
//===========================================使用===============
在应用的窗口中就直接这样写就可以了
#pragma mark - UITabelViewDatasource
- (RecordTableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
RecordTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier forIndexPath:indexPath];
NSDictionary * dic = [_dataArray objectAtIndex:indexPath.row];
[cell getDataByDictionary:dic];
return cell;
}
// 返回cell
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
}
cell.accessoryType = UITableViewCellAccessory
@property(nonatomic) UITableViewCellAccessory
@property(nonatomic,retain) UIView
@property(nonatomic) UITableViewCellAccessory
@property(nonatomic,retain) UIView
- (void) performExpand:(id)paramSender{
}
通过,上面一步,我们为Cell添加了一个自定义的按钮。
也许就会遇到这么一个纠结的情况,当点击UITableViewCell高亮时,其子视图中不该高亮的对象(比如说自定义的那个按钮)也高亮了。
比如:
正确方式:我们需要cell被选中时,按钮不应该也被高亮显示。如:
错误方式:但是,cell被选中时,按钮却也高亮显示了。如:
- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated{
}
- (void)setSelected:(BOOL)selected animated:(BOOL)animated{
}
因为当UITableViewCell为选中状态时,UITableViewCell把selectedBackgroundView当作一个子视图来添加;
selectedBackgroundView被添加在UITableViewCell的backgroundView之上,或者所有其它视图之下。
当调用setSelected: animated:这一方法时,会导致selectedBackgroundView以一个alpha消化的状态来出现和消失。
还应该注意:
UITableViewCell的selectionStyle值为UITableViewCellSelection
// 设置背景
[self setBackgroundImageByName
[self setBackgroundImage:[UIImage imageNamed:@"table_live_bg.png"]];
[self.contentView insertSubview:messageBackgroundViewbelowSubview:self.textLabel];
//定制Delete字符串,添加函数 返回要显示的字符串
-(NSString *)tableView:(UITableView*)tableView titleForDeleteConfirmati
}
这篇关于iOS经验4:自定义TableViewCell应用代码例子过程 时间戳的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!