iOS开发-UITableView-5(cell对勾)

翻译 2015年07月10日 16:23:38
今天做个表格,突然发现在选中某行时打勾,再次选中其它行时,上次选中的行的勾还在,不能自动消失。
于是试了以下3种方法:
1、// 第一种方法:在选中时先遍历整个可见单元格,设置所有行的默认样式,再设置选中的这行样式,此方法不能取消单元格的选中

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

{

       NSArray *array = [tableView visibleCells];

    for (UITableViewCell *cell in array) {

        [cell setAccessoryType:UITableViewCellAccessoryNone];

        cell.textLabel.textColor=[UIColor blackColor];

    

    }

   UITableViewCell *cell=[self.tableView cellForRowAtIndexPath:indexPath];

    cell.textLabel.textColor=[UIColor blueColor];

    [cell setAccessoryType:UITableViewCellAccessoryCheckmark];

}

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

-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(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=[tableView indexPathForSelectedRow];

NSComparisonResult result=[indexPath compare:index];

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

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

   current=indexPath.row;

}

 

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

{

 

if(indexPath.row==current){

        

        return;

        

    }

    UITableViewCell*newCell = [tableView cellForRowAtIndexPath:indexPath];

    

    if(newCell.accessoryType==UITableViewCellAccessoryNone)

    {

        

        newCell.accessoryType=UITableViewCellAccessoryCheckmark;

        

        newCell.textLabel.textColor=[UIColor blueColor];

        

    }

    

    NSIndexPath*oldIndexPath =[NSIndexPath indexPathForRow:current

    

    inSection:0];

    UITableViewCell*oldCell = [tableView cellForRowAtIndexPath:oldIndexPath];

    

    if(oldCell.accessoryType==UITableViewCellAccessoryCheckmark)

    {

        

        oldCell.accessoryType=UITableViewCellAccessoryNone;

        

        oldCell.textLabel.textColor=[UIColor blackColor];

        

    }

   current=indexPath.row;

}

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

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

{

     current=indexPath.row; 

    [self.tableView reloadData];

}

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

{

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

    {

        return UITableViewCellAccessoryCheckmark;

    }

    else

    {

    return UITableViewCellAccessoryNone;

    }

}

或者直接在

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

单元格的默认高度为44

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

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

相关文章推荐

iOS开发:UITableView的优化技巧-异步绘制Cell

最近在微博上看到一个很好的开源项目VVeboTableViewDemo,是关于如何优化UITableView的。加上正好最近也在优化项目中的类似朋友圈功能这块,思考了很多关于UITableView的优...

iOS开发笔记--解决UITableView中Cell重用机制导致内容出错的方法总结

UITableView继承自UIScrollview,是苹果为我们封装好的一个基于scroll的控件。上面主要是一个个的UITableViewCell,可以让UITableViewCell响应一些点击...
  • errvv
  • errvv
  • 2016-01-27 10:04
  • 237

iOS开发:XIB之UITableView自定义cell

iOS开发:XIB之UITableView自定义cell

iOS开发之UITableview之多种Cell高度自适应实现方案的UI流畅度分析

本篇博客的主题是关于UI操作流畅度优化的一篇博客,我们以TableView中填充多个根据内容自适应高度的Cell来作为本篇博客的使用场景。当然Cell高度的自适应网上的解决方案是铺天盖地呢,今天我们的...

IOS开发(25)之删除UITableView的Cell

1 前言 今天我们来学习一下怎样从UITableView中滑动删除Cell数据。 2 代码实例 ZYViewController.h #import @interface ZYView...

IOS开发(27)之UITableView的Cell显示长按快捷菜单

1 前言 对于UITableView的Cell长按,可以触发快捷菜单,包括复制,粘贴之类的操作。 2 代码实例 ZYViewController.h #import @interf...

IOS开发(28)UITableView之移动Section和Cell

1 前言 今天我们来学习一下如何移动UITableView控件中的Section和Cell 2 代码实例 ZYViewController.h #import @interface...

ios开发基础1---UITableView中cell重用导致内容出错

如果大家是做ios开发,相信大家都用过UITableView,UITableView是继承自UIScroller,是苹果公司为我们封装好的一套很好用的控件,对于UITableView的使用我就不一一讲...

iOS开发-------模拟团购网站(UITableView 表格视图)以及自定义cell

上一篇博客说了UIScrollView(滚动视图),以及如何实现无限滚动的原理,那么这一次结合UIScrollView,以及UITableView(表格视图)做一个模拟团购的小Demon,并使用了xi...

iOS开发之高级视图—— UITableView(四)自定义Cell

当我们使用UITableView的时候,经常需要自定义Cell,这个例子展示了一个简单的自定义的Cell。          HeroViewCell.h // // HeroViewCell...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)