tableview 点击cell改变cell中的label.text的字体颜色,cell复用出现问题的解决方案2

关于Cell的复用问题,上次已经说了一种,但似乎那种方法不是最好的,所以说,今天下午根据别人提示,想到了此方法。还是老样子,可能不是最好的,但是实现了功能,至少比上次的要好一些。

题目要求:定义固定数据源,然后让tableview的行上各自显示第几行,然后点击选中的时候,字体颜色会变为红色,取消选中的时候字体变为黑色。然后最后的时候要输出选中的结果

解题思路:首先实现tableView的几个协议,然后定义一个模型,在模型中定义一个标识,然后通过点中的时候标识,然后判断标识解决Cell的复用。

Model中

//

//  InfoData.h

//  cell复用2Demo

//

//  Created by 程磊 on 14/12/8.

//  Copyright (c) 2014年
程磊. All rights reserved.

//

#import <Foundation/Foundation.h>

@interface InfoData :NSObject

@property (nonatomic,strong)
NSString *labelInfo;

@property (nonatomic,assign)
int b;

@end

//

//  ViewController.m

//  cell复用2Demo

//

//  Created by 程磊 on 14/12/8.

//  Copyright (c) 2014年
程磊. All rights reserved.

//

#import "ViewController.h"

#import "InfoData.h"

@interface
ViewController () <UITableViewDataSource,UITableViewDelegate> {

UITableView *_tableView;

NSMutableArray *_dataArray;

NSMutableArray *_selectedArray;

}

@end

@implementation ViewController

- (void)viewDidLoad {

[superviewDidLoad];

// Do any additional setup after loading the view, typically from a nib.

_dataArray = [[NSMutableArray
alloc] init];

_selectedArray = [[NSMutableArray
alloc] init];

for (int i =
0; i < 100; i++) {

NSString *str = [NSString
stringWithFormat:@"第%d行",i];

InfoData *data = [[InfoData
alloc] init];

data.labelInfo = str;

data.yesOrNo =10;

[_dataArrayaddObject:data];

}

_tableView = [[UITableViewalloc]
initWithFrame:CGRectMake(0,50,
320,
430)style:UITableViewStylePlain];

_tableView.delegate =self;

_tableView.dataSource =self;

_tableView.allowsSelection =YES;

_tableView.allowsMultipleSelection =YES;

[self.viewaddSubview:_tableView];

UIButton *btn = [UIButtonbuttonWithType:UIButtonTypeSystem];

btn.frame =CGRectMake(0,20,
320, 30);

[btn setTitle:@"确定"forState:UIControlStateNormal];

[btn addTarget:selfaction:@selector(btnClick:)forControlEvents:UIControlEventTouchUpInside];

[self.viewaddSubview:btn];

}

- (void)btnClick:(UIButton *)btn{

for (InfoData *datain
_selectedArray) {

NSString *str = [NSString
stringWithString:data.labelInfo];

NSLog(@"%@",str);

}

}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath
*)indexPath{

static NSString *ID =
@"ID";

UITableViewCell *cell = [tableViewdequeueReusableCellWithIdentifier:ID];

if (cell == nil) {

cell = [[UITableViewCellalloc]
initWithStyle:UITableViewCellStyleDefaultreuseIdentifier:ID];

}

InfoData *data = _dataArray[indexPath.row];

if (data.yesOrNo ==
100) {

cell.textLabel.textColor = [UIColorredColor];

}else{

cell.textLabel.textColor = [UIColorblackColor];

}

cell.textLabel.text = data.labelInfo;

return cell;

}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

{

return_dataArray.count;

}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{

InfoData *data = _dataArray[indexPath.row];

data.yesOrNo =100;

[_selectedArrayaddObject:data];

UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];

cell.textLabel.textColor = [UIColorredColor];

}

- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath{

InfoData *data = _dataArray[indexPath.row];

if ([_selectedArray
containsObject:data]) {

[_selectedArrayremoveObject:data];

}

UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];

cell.textLabel.textColor = [UIColorblackColor];

}

- (void)didReceiveMemoryWarning {

[superdidReceiveMemoryWarning];

// Dispose of any resources that can be recreated.

}

@end

时间: 2024-10-29 19:08:07

tableview 点击cell改变cell中的label.text的字体颜色,cell复用出现问题的解决方案2的相关文章

改变listview中item选中时文字的颜色

当listview的某个item选中时,默认有个选中的高亮显示,如果你要自定义选中时的高亮显示效果,可以在listview中设置属性 1 android:listSelector="@drawable/item_selector" 其中item_selector是在drawable目录下定义的一个xml文件,这种用于突出不同状态下显示效果的xml文件我们称之为selector: 1 2 3 4 5 6 7 <?xml version="1.0" encodin

改变静态编辑框static text背景色,字体设置及字体背景

IDC_ShowTime为编辑框ID m_showtime为静态编辑框的变量 1.dlg.h中 CBrush m_showtimeBrush; CFont m_editFont;//字体 2.OnInitDialog()中 m_showtimeBrush.CreateSolidBrush(RGB(204,0,204));  ///编辑框背景颜色 CEdit *m_EditAa=(CEdit *)GetDlgItem(IDC_ShowTime);     //IDC_ShowTime为编辑框ID

改变字符串中部分字符传的字体大小和颜色

- (void)viewDidLoad { NSRange range = [_amountLabel.text rangeOfString:@"0.00"]; [self setTextColor:_amountLabel FontNumber:[UIFont systemFontOfSize:13] AndRange:range AndColor:[UIColor orangeColor]]; } //设置不同字体颜色 -(void)setTextColor:(UILabel *)

iOS8中如何将状态栏的字体颜色改为白色

1.设置Info.plist中的View controller-based status bar appearance为YES 2.然后在AppDelegate.swift中的 func application(application: UIApplication!, didFinishLaunchingWithOptions launchOptions: NSDictionary!) -> Bool 方法中加入: UINavigationBar.appearance().barStyle =

一起学android之如何设置TextView中不同字段的字体颜色(22)

在这里先看看效果图: OK,有时候,在我们的项目中会要求TextView中文本有一部分的字体颜色不一样,这时我们应该使用 SpannableStringBuilder这个工具类,当然这个类的功能很强大,这里我只是实现上面的样式,其它的不做介绍, SpannableStringBuilder的实现接口是Spannable这个接口,而Spannable最终都实现了CharSequence,因此我们直 接可以通过TextView.setText()来进行设置. 下面给出实现代码: public cla

转--动态改变UITableView中的Cell高度

往往在开发iPhone的应用过程中用得最多的应该算是UITableVIew了,凭着IOS给UITableView赋予了这种灵活的框架结构,让它不管在显示列表方面还是在排版方面都有着一定的优势.虽然UITableView功能强大,但是对于一些复杂的应用需求在开发的过程中会出现一些问题,如动态改变UITableView显示的Cell高度就是其中之一 其实想要改变UITableView的Cell高度并不难,UITableView带有一个rowHeight属性,使用他就可以改变高度了.但是这样的改变是把

点击cell后 cell的背景不变,cell上的字体颜色发生改变的功能实现

在我们使用音频播放的时候,常常出现播放的时候,被播放的cell的字体有别于其他cell的字体,这样的功能如何实现. 首先在应用上,cell肯定是自己定制的,上面可以放置UIImageView和UILable控件 在点击的时候,被点击的图片和Label的字体颜色发生改变. 我们需要在didSelectRowAtIndexPath方法.cellForRowAtIndexPath方法中分别对cell上的颜色进行改变.最重要的事情是:在cellForRowAtIndexPath方法中添加这样的代码块 f

[Swift通天遁地]二、表格表单-(3)在表格中嵌套另一个表格并使Cell的高度自适应

本文将演示如何在表格中嵌套另一个表格并使Cell的高度自适应,创建更加强大的布局效果. 在项目文件夹[DemoApp]上点击鼠标右键,弹出右键菜单. [New File]->[Cocoa Touch Class]->[Next]-> [Class]:CustomizeUITableViewCell ,类名. [Subclass of]:UITableViewCell ,父类 [Language]:Swift ->[Next]->[Create]在项目导航区,打开刚刚创建的代码

tableView循环引用以及缓存池中的两个常见Bug

一.直接看Bug:unable to dequeue a cell with identifier cell_id - must register a nib or a class for the identifier or connect a prototype cell in a storyboard 二.使用tableView的cell重用机制后cell中不显示detailTextLabel. * *  本文中大量涉及tableView的重新引用机制 *  在tableView上下滑动的时