博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
重写UITableViewCell子类中属性的setter方法来实现隐藏或显示该cell中的某些控件
阅读量:6240 次
发布时间:2019-06-22

本文共 4636 字,大约阅读时间需要 15 分钟。

重写UITableViewCell子类中属性的setter方法来实现隐藏或显示该cell中的某些控件

为什么会需要这样子的一种方法来实现隐藏或者显示一个cell中的某些控件呢?

其实,隐藏cell中某些控件可以直接在tableView:cellForRowAtIndexPath:方法中直接实现,我们需要判断外部变量比如bool值来决定是否显示这个控件,但需要额外的代码写在tableView:cellForRowAtIndexPath:方法当中,如果我们把bool值传递给该cell让其自己判断是否显示隐藏这个控件,可读性将会大幅增加:)

效果:

源码:

YXCell.h

////  YXCell.h//  SomeCell////  Copyright (c) 2014年 Y.X. All rights reserved.//#import 
@interface YXCell : UITableViewCell@property (nonatomic, strong) UIImageView *headView; // 头像@property (nonatomic, assign) BOOL showHeadView; // 是否显示头像@property (nonatomic, strong) UILabel *name;@property (nonatomic, assign) BOOL showName;@end

YXCell.m

////  YXCell.m//  SomeCell////  Copyright (c) 2014年 Y.X. All rights reserved.//#import "YXCell.h"@implementation YXCell- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];    if (self)    {        // 头像        _headView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 160, 100)];        [self addSubview:_headView];                // 标签        _name      = [[UILabel alloc] initWithFrame:CGRectMake(180, 10, 200, 30)];        _name.font = [UIFont fontWithName:@"HelveticaNeue-Thin"                                     size:20.f];        _name.textColor = [UIColor orangeColor];        [self addSubview:_name];    }    return self;}@synthesize showHeadView = _showHeadView;- (void)setShowHeadView:(BOOL)showHeadView{    _showHeadView = showHeadView;    if (_showHeadView == YES)    {        _headView.alpha = 1;    }    else    {        _headView.alpha = 0;    }}@synthesize showName = _showName;- (void)setShowName:(BOOL)showName{    _showName = showName;    if (_showName == YES)    {        _name.alpha = 1;    }    else    {        _name.alpha = 0;    }}@end

RootViewController.m

////  RootViewController.m//  SomeCell////  Copyright (c) 2014年 Y.X. All rights reserved.//#import "RootViewController.h"#import "YXCell.h"@interface RootViewController ()
@property (nonatomic, strong) UITableView *tableView;@property (nonatomic, strong) NSArray *data;@end@implementation RootViewController- (void)viewDidLoad{ [super viewDidLoad]; // 初始化数据源 _data = @[@{
@"showHeadView": [NSNumber numberWithBool:YES], @"showName" : [NSNumber numberWithBool:YES], @"name" : @"YouXianMing"}, @{
@"showHeadView": [NSNumber numberWithBool:YES], @"showName" : [NSNumber numberWithBool:NO], @"name" : @"YouTianXing"}, @{
@"showHeadView": [NSNumber numberWithBool:YES], @"showName" : [NSNumber numberWithBool:YES], @"name" : @"YouJin"}, @{
@"showHeadView": [NSNumber numberWithBool:NO], @"showName" : [NSNumber numberWithBool:NO], @"name" : @"YouXia"}, @{
@"showHeadView": [NSNumber numberWithBool:NO], @"showName" : [NSNumber numberWithBool:YES], @"name" : @"YouMeng"}, @{
@"showHeadView": [NSNumber numberWithBool:YES], @"showName" : [NSNumber numberWithBool:YES], @"name" : @"YouZiLing"}]; // 初始化tableView _tableView = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStylePlain]; _tableView.delegate = self; _tableView.dataSource = self; [self.view addSubview:_tableView];}#pragma mark - 代理- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ return [_data count];}- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ static NSString *reusedID = @"YXCell"; YXCell *cell = [tableView dequeueReusableCellWithIdentifier:reusedID]; if (cell == nil) { cell = [[YXCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:reusedID]; } // 设置头像 cell.headView.image = [UIImage imageNamed:@"back.jpg"]; cell.showHeadView = [_data[indexPath.row][@"showHeadView"] boolValue]; // 设置文本 cell.name.text = _data[indexPath.row][@"name"]; cell.showName = [_data[indexPath.row][@"showName"] boolValue]; return cell;}- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ return 100;}- (BOOL)tableView:(UITableView *)tableView shouldHighlightRowAtIndexPath:(NSIndexPath *)indexPath{ return NO;}@end

 

 

 

转载地址:http://svsia.baihongyu.com/

你可能感兴趣的文章
组策略导入导出secedit
查看>>
Windows Phone 7.5 - Local SQL Database(简介)
查看>>
微软宣布Entity Framework 5的性能有了显著提升
查看>>
SPSS中八类常用非参数检验之二:二项分布(Binomial)检验
查看>>
mysql字段类型范围说明:int、bigint、smallint、tinyint,char、varchar、nvarchar
查看>>
php简单对象与数组的转换函数代码(php多层数组和对象的转换)
查看>>
C# Socket编程(5)使用TCP Socket
查看>>
SQL SERVER IN参数化处理
查看>>
Python MongoDB Spatial Query
查看>>
NetBeans IDE 7.4 Beta版本build JavaFX时生成的可执行jar包执行时找不到依赖的jar包
查看>>
笔记本wifi热点设置好后,手机连上但不能上网问题
查看>>
Run ASP.NET MVC site on mac (mono/xamarin studio)
查看>>
win8.1安装驱动出现“文件的哈希值不在指定的目录”的解决办法[zz]
查看>>
CRM 常用SQL 脚本
查看>>
备忘录--关于线程和IO知识
查看>>
【iCore3 双核心板】例程八:定时器PWM实验——呼吸灯
查看>>
jquery tmpl 详解
查看>>
docker学习笔记4:利用docker hub上的mysql镜像创建mysql容器
查看>>
【Xamarin开发 Android 系列 3】循序渐进的学习顺序
查看>>
自定义列表dl的使用原因和场合
查看>>