zoukankan      html  css  js  c++  java
  • UITableView cell自定义视图中插入Table实现复杂界面

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

    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
  • 相关阅读:
    Android 适配底部返回键等虚拟键盘的完美解决方案
    Android 第三方库导致jar包冲突解决办法
    git强制push
    解决因为本地代码和远程代码冲突,导致git pull无法拉取远程代码的问题
    上周热点回顾(4.4-4.10)团队
    上周热点回顾(3.28-4.3)团队
    上周热点回顾(3.21-3.27)团队
    上周热点回顾(3.14-3.20)团队
    .NET跨平台之旅:corehost 是如何加载 coreclr 的团队
    .NET跨平台之旅:探秘 dotnet run 如何运行 .NET Core 应用程序团队
  • 原文地址:https://www.cnblogs.com/lm3515/p/1908956.html
Copyright © 2011-2022 走看看