将一种cell当做几种cell使用

将一种cell当做几种cell用是有着一些意义的,比如,有时候,不同的cell之间差异很小,如果再派生一个cell出来,就会显得很麻烦,这时候,将这个cell当做几个cell用才有市场的说:)

效果:

源码:

ModelCell.h 与 ModelCell.m

//
//  ModelCell.h
//  Cells
//
//  Copyright (c) 2014年 Y.X. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface ModelCell : UITableViewCell

@property (nonatomic, assign) BOOL  show1;
@property (nonatomic, assign) BOOL  show2;
@property (nonatomic, assign) BOOL  show3;

@end

RootViewController.m

//
//  RootViewController.m
//  Cells
//
//  Copyright (c) 2014年 Y.X. All rights reserved.
//

#import "RootViewController.h"
#import "ModelCell.h"

@interface RootViewController ()<UITableViewDataSource, UITableViewDelegate>

@property (nonatomic, strong) UITableView  *tableView;
@property (nonatomic, strong) NSArray      *dataSource;

@end

@implementation RootViewController

- (void)viewDidLoad
{
    [super viewDidLoad];

    // tableView
    _tableView = [[UITableView alloc] initWithFrame:self.view.bounds
                                              style:UITableViewStylePlain];
    _tableView.dataSource     = self;
    _tableView.delegate       = self;
    _tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
    [self.view addSubview:_tableView];
}

#pragma mark - UITableView‘s dataSource & delegate
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return 100;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *reusedFlag = @"YouXianMing";
    ModelCell *cell = [tableView dequeueReusableCellWithIdentifier:reusedFlag];
    if (cell == nil) {
        cell = [[ModelCell alloc] initWithStyle:UITableViewCellStyleDefault
                                reuseIdentifier:reusedFlag];
    }

    cell.show1 = YES;
    cell.show2 = YES;
    cell.show3 = YES;

    return cell;
}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return 100.f;
}

@end

核心的地方:

根据属性的setter方法动态隐藏cell中的某些控件

然后在配置cell的时候动态设定要显示的控件

just so easy :)

将一种cell当做几种cell使用

时间: 2024-10-12 17:00:55

将一种cell当做几种cell使用的相关文章

tableView &nbsp; cell 复用 第二种

cell 第二种方法 (1)static NSString * ideng = @"reuse"; cell 第二种方法 (2)        注册复用cell (cell 的类型和标识符) (可以同时注册多个cell , 方法相同 , 一定要保证标识符是不一样的)       注册到了tableView的复用池        [self.tableView registerClass:[TableViewCell class] forCellReuseIdentifier:ideng

创建cell的几种方式

方式一  注册cell  -> 无需为cell绑定标识符 [使用UIViewController完成!] l  1> static NSString * const ID = @"cell"; // 全局ID变量 l  2> 在视图加载完成后使用tableView进行注册cell - (void)viewDidLoad { [super viewDidLoad]; [self.tableView registerClass:[UITableViewCell class

使用可重用 cell 的两种方式

1. 最常用的方法 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {      UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];     if ( !cell)     {         cell = [[UITable

Hibernate的七种映射关系之七种关联映射(二)

继续上篇博客 七.Hibernate双向一对多关联映射:让多的一端来维护关系. 主要是解决一对多单向关联的缺陷,而不是需求驱动的. 1.在Student.java实体类里添加Classes引用.private Classes classes; 2.Student.hbm.xml里添加many-to-one标签:<many-to-one name="classes" column="classesid"/>.Classes.hbm.xml在例子(六)里的那

Hibernate的七种映射关系之七种关联映射(一)

关联映射就是将关联关系映射到数据库里,在对象模型中就是一个或多个引用. 一.Hibernate多对一关联映射:就是在"多"的一端加外键,指向"一"的一端. 比如多个学生对应一个班级,多个用户对应一个级别等等,都是多对一关系. 1."多"端实体加入引用"一"端实体的变量及getter,setter方法. 比如说多个学生对应一个班级,在学生实体类加入:private Grade grade; 2."多"端配置文

两种删除单链表结点的实现,一种O(n),一种O(1)

常规的删除单链表结点的做法是挨个查找到该结点的前一个结点,然后去掉要删除的这个结点,回收内存.这个需要O(n)的时间. 有一种比较快速的删除掉链表指定一个节点的方法,就是把下一个结点的内容复制到当前这个结点,然后把下一次结点删除掉,这个需要考虑当要删除的结点是最后一个结点的情况. 如果刚好是最后一个结点,则需要O(n)的时间,如果不是最后一个结点,可以在O(1)时间内完成删除操作. 1 // 2 // main.c 3 // SingleListDeleteNode 4 // 5 // Crea

20Mybatis_订单商品数据模型_一对一查询——resultType和resultMap两种方式以及两种方式的总结

上一篇文章分析了数据模型,这篇文章就给出一个需求,这个需求是一对一查询,并完成这个需求. -------------------------------------------------------------------------------------------------------------------------------------------- 需求: 查询订单信息,关联查询创建订单的用户信息. 记住:用Mybatis开发的顺序就是 1.写sql语句 2.创建pojo类来

4种基本排序&2种查找

<?php $arr=array(5,2,1,7,8,6,3,10,9); showArray($arr); /** * 遍历打印数组 * @param string $type  排序方式 * @param array $arr    排序数组 */ function showArray($arr,$type='原数组'){ echo "$type:<br/>"; foreach ($arr as $v){ echo ' '.$v.' '; } echo '<

世界上有10种人,一种懂二进制,一种不懂。那么你知道两个int32整数m和n的二进制表达,有多少个位(bit)不同么? 输入例子: 1999 2299 输出例子: 7

这是小米2015年暑假实习生第一道笔试题,其实不难,主要用到移位操作和或运算符就可以搞定,具体代码如下: /*世界上有10种人,一种懂二进制,一种不懂.那么你知道两个int32整数m和n的二进制表达,有多少个位(bit)不同么? 输入例子: 1999 2299 输出例子: 7 */ #include<stdio.h> int countBitDiff(int m, int n) { int data=1; int a,b; int count=0; for(int i=0;i<31;i+