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
  • 相关阅读:
    GmSSL 与 OpenSSL 共存的安装方法
    爬虫之ssh证书警告错误
    逆向so文件调试工具IDA基础知识点
    frida- registernatives获取so层动态注册函数
    绑定方法与非绑定方法, 反射
    Elk stack安装部署
    类的继承和组合
    安装部署kafka和zookeeper集群(三节点)
    ELK stack 生产问题
    Elasticsearch删除数据操作,你必须知道的一些坑
  • 原文地址:https://www.cnblogs.com/lm3515/p/1908956.html
Copyright © 2011-2022 走看看