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

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

通过界面我们断定是一个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  
@interface MyProfileTableViewCell : UITableViewCell 
{ 
    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。

你可能感兴趣的:(地图与位置)