最近项目中需要实现如下图所示的效果:

image

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

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

image

在自定义的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

    我在这里又添加了一个子cell,效果和之前的一样。

    下面在总结一下实现的过程,就是在一个tableview中的cell中在添加一个uitableview。

Leave a Reply

电子邮件地址不会被公开。 必填项已用*标注