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];

最新文章

  1. html/css小练习2
  2. Dancing Links & Algorithm X
  3. SQL总结二
  4. VS2010中使用GDAL(一)
  5. 解决getOutputStream() has already been called for this response
  6. Android 解决ListView中每一项与button冲突
  7. ASP.NET在IE10,IE11中Form表单身份验证失效问题解决方法
  8. Class<Object>与Class<?>有何区别呢
  9. JAVA与ABA问题
  10. linux文件夹操作(及模糊搜索)
  11. CentOS 7 安装virtualBox
  12. Burp Suite教程(英文版)
  13. HTML 表单和表格
  14. java笔记2之算术运算符
  15. 解析GenericOptionsParser
  16. OGNL简介
  17. chrome浏览器再次打开黑屏一段时间
  18. 使用JAVA获取JSON报文
  19. mac下卸载jdk
  20. CTimeSpan

热门文章

  1. XMPP系列(六)---创建群组
  2. Unity UGUI图文混排源码(三) -- 动态表情
  3. Java的访问权限详解(3+1)public private protected default
  4. Android开发学习之路--RxAndroid之初体验
  5. Android初级教程反射+AIDL+内容观察者监控黑名单号码代码模板
  6. 创建银行API
  7. Ubuntu下安装GTK环境
  8. Android初级教程XUtils实现“断点续传”下载
  9. JqGrid 显示表格
  10. SimpleAdapter和Baseadapter填充listActivity-android学习之旅()