您的位置:首页 > 产品设计 > UI/UE

UITableView cell自定义视图中插入Table实现复杂界面

2013-07-30 15:21 507 查看
最近项目中需要实现如下图所示的效果:





通过界面我们断定是一个UITableView,分成三部分,第一部分是全天,第二部分是上午,第三部分是下午。最主要的是AM和PM中也是列表,这个就比较复杂了。我的做法是在Iphone在table cell中添加自定义布局view这篇文章的基础上制作更复杂的界面。具体的过程如下:

创建UITableViewCell的自定义类,这个就不用说了,在之前的博客中介绍过。
在创建的cell中添加一个新的UITableView。





在自定义的cell中添加组建,我的类是MyProfileTableViewCell,在这个中添加:

IBOutlet UITableView *myTaleView;

IBOutlet UILabel *lable;

实现相应的set get方法。在和IB中相应的组建相连。

在tableview中引入相应的cell:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

static NSString *CellIdentifier = @"CustomCellIdentifier";

if ([indexPath section]==0) {

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil) {

cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellSelectionStyleGray

reuseIdentifier:CellIdentifier] autorelease];

}

return cell;

}else {

MyProfileTableViewCell *cell = (MyProfileTableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];

NSArray *array = [[NSBundle mainBundle] loadNibNamed:@"MyProfileTableViewCell" owner:self options:nil];

cell = [array objectAtIndex:0];

[cell setSelectionStyle:UITableViewCellSelectionStyleGray];

if ([indexPath section]==1) {

[[cell lable] setText:@"AM"];

}

if ([indexPath section]==2) {

[[cell lable] setText:@"PM"];

}

return cell;

}

}

在相应的cell中添加UITableView相应的Delegate和DataSource,我的cell完整的声明如下:

#import <UIKit/UIKit.h>

@interface MyProfileTableViewCell : UITableViewCell

<UITableViewDelegate,UITableViewDataSource>{

IBOutlet UITableView *myTaleView;

IBOutlet UILabel *lable;

}

@property (nonatomic,retain) UITableView *myTaleView;

@property (nonatomic,retain) UILabel *lable;

@end

在添加相应的协议函数即可:

#import "MyProfileTableViewCell.h"

#import "MyTableViewCell.h"

@implementation MyProfileTableViewCell

@synthesize myTaleView,lable;

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {

if ((self = [super initWithStyle:style reuseIdentifier:reuseIdentifier])) {

}

return self;

}

- (void)setSelected:(BOOL)selected animated:(BOOL)animated {

[super setSelected:selected animated:animated];

}

- (void)dealloc {

[self.lable release];

[self.myTaleView release];

[super dealloc];

}

- (NSInteger)tableView:(UITableView *)tableView1 numberOfRowsInSection:(NSInteger)section {

return 5;

}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

static NSString *CellIdentifier = @"CustomCellIdentifier";

MyTableViewCell *cell = (MyTableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil) {

NSArray *array = [[NSBundle mainBundle] loadNibNamed:@"MyTableViewCell" owner:self options:nil];

cell = [array objectAtIndex:0];

[cell setSelectionStyle:UITableViewCellSelectionStyleGray];

}

[[cell label] setText:@"10:00"];

[[cell _content] setText:@"早上起来卖大米,卖了一筐大大米。\n早上起来卖大米,卖了一筐大大米。"];

return cell;

}

- (CGFloat)tableView:(UITableView *)atableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

{

return 56;

}

@end

做项目的时候会用的这种情况,把找到的资料再次分享给大家,传播技术人人有责。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: