1、第一种方法:先定位到最后一行,若选中最后一行直接退出,否则用递归改变上次选中的状态,重新设置本次选中的状态。

- (UITableViewCell*)tableView:(UITableView*)tableViewcellForRowAtIndexPath:(NSIndexPath*)indexPath

{

current=indexPath.row;

}

- (void)tableView:(UITableView *)tableViewdidSelectRowAtIndexPath:(NSIndexPath *)indexPath

{

if(indexPath.row==current){

return;

}

UITableViewCell*newCell =[tableViewcellForRowAtIndexPath:indexPath];

if(newCell.accessoryType==UITableViewCellAccessoryNone)

{

newCell.accessoryType=UITableViewCellAccessoryCheckmark;

newCell.textLabel.textColor=[UIColorblueColor];

}

NSIndexPath*oldIndexPath=[NSIndexPathindexPathForRow:current

];

UITableViewCell*oldCell =[tableViewcellForRowAtIndexPath:oldIndexPath];

if(oldCell.accessoryType==UITableViewCellAccessoryCheckmark)

{

oldCell.accessoryType=UITableViewCellAccessoryNone;

oldCell.textLabel.textColor=[UIColorblackColor];

}

current=indexPath.row;

}

2、第二种方法:设置一个全局变量,选中的时候传值,然后通过重新加载数据,使得在选中这行打勾,其他行无样式,此方法加载的时候第一行默认打勾了

-(void)tableView:(UITableView *)tableViewdidSelectRowAtIndexPath:(NSIndexPath*)indexPath

{

current=indexPath.row;

[self.tableView reloadData];

}

- (UITableViewCellAccessoryType)tableView:(UITableView*)tableViewaccessoryTypeForRowWithIndexPath:(NSIndexPath*)indexPath

{

if(current==indexPath.row&&current!=nil)

{

returnUITableViewCellAccessoryCheckmark;

}

else

{

returnUITableViewCellAccessoryNone;

}

}

或者直接在

-(UITableViewCell*)tableView:(UITableView*)tableViewcellForRowAtIndexPath:(NSIndexPath*)indexPath里面设置

单元格的默认高度为44

NSLog(@"%@",NSStringFromCGRect(cell.frame));

设置选中时的背景颜色可以用selectedbackgroundview设置

3、第三种方法:在选中时先遍历整个可见单元格,设置所有行的默认样式,再设置选中的这行样式,此方法不能取消单元格的选中

-(void)tableView:(UITableView*)tableViewdidSelectRowAtIndexPath:(NSIndexPath*)indexPath

{

NSArray *array =[tableViewvisibleCells];

for (UITableViewCell *cell
in array) {

[cellsetAccessoryType:UITableViewCellAccessoryNone];

cell.textLabel.textColor=[UIColorblackColor];

}

UITableViewCell *cell=[self.tableViewcellForRowAtIndexPath:indexPath];

cell.textLabel.textColor=[UIColorblueColor];

[cell setAccessoryType:UITableViewCellAccessoryCheckmark];

}

此时只设定了在可见范围内选择的是一行,还得设置滚动后的选中状态,

-(void)tableView:(UITableView *)tableViewwillDisplayCell:(UITableViewCell *)cellforRowAtIndexPath:(NSIndexPath *)indexPath

{

NSIndexPath *index=[tableView indexPathForSelectedRow];

if (index.row==indexPath.row&&index!=nil)

{

cell.backgroundColor=[UIColor colorWithRed:232.0/255.0 green:232.0/255.0blue:232.0/255.0 alpha:1.0];

cell.textLabel.textColor=[UIColor colorWithRed:0.0 green:206.0/255.0blue:192.0/255.0 alpha:1.0];

}

else

{

cell.backgroundColor=[UIColor clearColor];

cell.textLabel.textColor=[UIColor blackColor];

}

}

单元格是否相同需要用到比较方法

NSIndexPath*index=[tableViewindexPathForSelectedRow];

NSComparisonResult
result=[indexPathcompare:index];

UITableView设置单元格选中后只显示一个打勾的三种简单方法(仅供参考)的更多相关文章

  1. PHPExcel解决内存占用过大问题-设置单元格对象缓存

    PHPExcel解决内存占用过大问题-设置单元格对象缓存 PHPExcel是一个很强大的处理Excel的PHP开源类,但是很大的一个问题就是它占用内存太大,从1.7.3开始,它支持设置cell的缓存方 ...

  2. iOS UITableView 移除单元格选中时的高亮状态

    在处理UITableView表格时,我们希望用户能够和触摸单元格式进行交互,但是希望用户在完成交互之后,这些单元格的选中状态能够消失,.Cocoa Touch 提供了两种方法来防止单元格背持久选中. ...

  3. [Xcode 实际操作]五、使用表格-(5)设置UITableView的单元格背景颜色

    目录:[Swift]Xcode实际操作 本文将演示单元格背景颜色的设置 在项目导航区,打开视图控制器的代码文件[ViewController.swift] import UIKit //首先添加两个协 ...

  4. Easyui datagrid 设置内容超过单元格宽度时自动换行显示

    datagrid 设置内容超过单元格宽度时自动换行显示 by:授客 QQ:1033553122 测试环境 jquery-easyui-1.5.3 问题描述 单元格内容超过单元格宽度不会自动化换行.如下 ...

  5. Excel输入公式后只显示公式却不计算如何解决?

    在使用Excel函数公式的时候,您是否碰到过输入公式,按下Enter键之后,单元格仍只显示公式,而不显示计算结果.   工具/原料   Excel 教程以Excel2013为例 方法/步骤     教 ...

  6. iOS开发——UI_swift篇&UITableView实现单元格展开与隐藏

    UITableView实现单元格展开与隐藏  关于UITableView的展开的收缩在前面的文章我已经结束,就是使用代理,通知,block传值的时候实现的,当时是使用一个Bool值来实现,最后使用着三 ...

  7. [Xcode 实际操作]五、使用表格-(11)调整UITableView的单元格顺序

    目录:[Swift]Xcode实际操作 本文将演示如何调整单元格在表格中的位置. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] import UIKit //首先 ...

  8. C#:org.in2bits.MyXls 文本格式日期 转换,以及设置单元格格式,保留两位小数点

    org.in2bits.MyXls  Excel导入日期格式的处理 表格内容为 2014-7-22 ,导入后显示为 41842 等于一个数值,根本不是日期,后来百度了一下,发现要做如下处理: stri ...

  9. C# Aspose.Cells 如何设置单元格样式

    //Instantiating a Workbook object Workbook workbook = new Workbook(); //Adding a new worksheet to th ...

随机推荐

  1. 19 Handler 子线程向主线程发送信息

    案例一 Message创建三种方法: package com.example.day19_handler_demo1; import android.os.Bundle; import android ...

  2. Linux之dmesg命令

    功能说明:显示内核缓冲区系统控制信息的工具 ,比如系统在启动时的信息会写到/var/log/中.语 法:dmesg [-cn][-s <缓冲区大小>] 补充说明:kernel会将开机信息存 ...

  3. Python图片处理库之PIL

    这个模块对于Python2.7 的windows64位电脑而言,还真的是不好找啊.这里分享一个下载链接吧,需要的朋友可以下载下来.PIL For Windows64 Python2.7下面分享一下这个 ...

  4. JS 遍历对象 jQuery遍历对象

    jquery for 循环遍历对象的属性: //对象的定义如下: var person={id:"1",name:"springok",age:25}; for ...

  5. SSH深度历险(一)深入浅出Hibernate架构(一)-------映射解析——七种映射关系

            ORM,全称是(Object Relational Mapping),即对象关系映射.ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现,这样开发人员就可以把对数据 ...

  6. Android回调事件传播-android学习之旅(四十五)

    概念简介 代码演示 package peng.liu.test; import android.app.ActionBar; import android.app.Activity; import a ...

  7. spring struts2 ibatis 框架结构图

    spring struts2 ibatis 框架结构图

  8. Volley网络框架完全解析(使用篇)

    在Android中,网络请求无非就这两种:HttpURLConnection和HttpClient( Apache),我们在使用时一般都会对它们进行一系列的封装,但是这过程不免有些繁琐,所以,Goog ...

  9. [信号处理技术]关于EMD的产生

    通俗易懂,有助于理解EMD和HHT,就原封不动的搬过来了. 原文链接:关于EMD的产生 自傅里叶变换与频谱分析技术产生,人们得以从另外一个角度观察时域信号,信号里各个点的密集程度,得以确定性地度量.之 ...

  10. React native开发中常见的错误

    react native环境搭建请移步:react native环境搭建 这里说说react native创建完成之后,运行中出现的常见问题, 问题1: java.lang.RuntimeExcept ...