ios开发之--tableview单选实现

实现思路比较简单,这里仅做记录:

直接上代码:

1,实现didSelectRowAtIndexPath方法

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [[NSUserDefaults standardUserDefaults]setValue:[array objectAtIndex:indexPath.row] forKey:APP_CHANGEVOICE];

    [_sextTableView reloadData];
    [tableView deselectRowAtIndexPath:indexPath animated:YES];

}

在cellForRowAtIndexPath里面实现方法

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellTableIdentifier = @"CellTableIdentifier";
    hPublickCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    if (cell == nil)
    {
        cell = [[hPublickCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellTableIdentifier];
        cell.selectionStyle = UITableViewCellSelectionStyleNone;
    }

    cell.textsLabel.text = array[indexPath.row];
    cell.selectionStyle=UITableViewCellSelectionStyleGray;
    //选择状态的存储
    if ([[[NSUserDefaults standardUserDefaults]valueForKey:APP_CHANGEVOICE] isEqualToString:[array objectAtIndex:indexPath.row]])
    {
        cell.accessoryType = UITableViewCellAccessoryCheckmark;
    }
    else
    {
        cell.accessoryType = UITableViewCellAccessoryNone;
    }

    return cell;

}

这里面的array是数据源数组。效果图如下:

2,上面这种是系统的选中样式,下面是自定义的:

代码如下:

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    ShippingAddressCell *cell = [tableView dequeueReusableCellWithIdentifier:@"ShippingAddressCell"];
    if (!cell) {
        cell = [[ShippingAddressCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"ShippingAddressCell"];
    }

    if (self.lastIndexPath == indexPath)
    {
        cell.selectedImg.image = [UIImage imageNamed:@"clicked"];
    }else
    {
        cell.selectedImg.image = [UIImage imageNamed:@"unClick"];
    }

    return cell;
}

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    //之前选中的,取消选择
    ShippingAddressCell *celled = [tableView cellForRowAtIndexPath:_lastIndexPath];
    celled.selectedImg.image = [UIImage imageNamed:@"unClick"];
    //记录当前选中的位置索引
    _lastIndexPath = indexPath;
    //当前选择的打勾
    ShippingAddressCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    cell.selectedImg.image = [UIImage imageNamed:@"clicked"];
}

这样就可以实现了,截图如下:

多选的有空再完善!代码可以直接粘贴使用!

原文地址:https://www.cnblogs.com/hero11223/p/8601038.html

时间: 2024-10-10 04:31:47

ios开发之--tableview单选实现的相关文章

IOS开发系列--TableView、多个TableViewCell、自定义Cell、Cell上画画(故事板+代码方式),ios7tableview索引

在此之前,我们已经创建了一个通过简单的表视图应用程序并显示预定义的图像.在本教程中,我们将继续努力,使应用程序变得更好,: >不同的行显示不同的图像 - 上个教程,我们的所有行显示相同的缩略图.那么不同的食物显示不同的图片不是更好么? >自定义视图单元-我们将展示我们自己的视图来替代默认表单元格样式 显示不同缩略图 在我们更改代码之前,让我们回顾显示缩略图的代码. 最后,我们增加了一个行代码指示UITableView每一行显示"creme_brelee.jpg"这张图片.显

IOS开发中tableView显示列表内容数据(storyboard版)

这是第一次写博客这类东西,且同为菜鸟级自学IOS,若有哪些不正确的希望您指正,谢谢... 先写一个大家自学时都会用到的东西——列表展示,或许您不认为这是问题,那是因为您聪慧,刚学时倒是困扰到我了,特意写一下: 第一步:创建工程IOS-->single view application      ——> Product Name:tableViewDemo                    Language:Objective—C                    Devices:iPh

iOS开发设置tableview的分割线

在开发ios8中大家会发现系统自带的分割线前面会有15个像素的空余,那么怎么才能像以前一样的,我看到别人的博客有提到 首先在viewdidload中设置好你的系统分割线,然后加上如下代码 listView=[[UITableView alloc] initWithFrame:CGRectMake(0, 0, self.contentView.frame.size.width,self.contentView.frame.size.height) style:UITableViewStylePla

ios开发之--tableview刷新某一个区和某一行

在开发中,有时候,我们不需要刷新整个表,只需要刷新局部数据即可,具体代码如下: //section刷新 NSIndexSet *indexSet=[[NSIndexSet alloc]initWithIndex:2]; [tableview reloadSections:indexSet withRowAnimation:UITableViewRowAnimationAutomatic]; //cell刷新 NSIndexPath *indexPath=[NSIndexPath indexPat

IOS 开发中 TableView的文本Cell高度的自适应,UILabel自动换行适应

最后的运行效果: 需求: 1.表格里的UILable要求自动换行 2.创建的tableViewCell的高度会自动适应内容的高度 一.用xcode构建项目,创建一个有tableView的视图,用纯代码的形式实现: 1.创建一个UIViewController类,定义一个UITableView,实现TableView的委托和数据源协议 // //  TableViewController.h //  AdaptiveCell // //  Created by swinglife on 14-1-

[IOS 开发]TableView如何刷新指定的cell 或section

//一个section刷新 NSIndexSet *indexSet=[[NSIndexSet alloc]initWithIndex:2]; [tableview reloadSections:indexSet withRowAnimation:UITableViewRowAnimationAutomatic]; //一个cell刷新 NSIndexPath *indexPath=[NSIndexPath indexPathForRow:3 inSection:0]; [tableView r

ios开发之-- tableview/collectionview获取当前点击的cell

方法如下: 一般collectionView 或者 tableview都有自带的点击函数,如下: 1, collectionView -(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{ //一般情况,cell不是自定义 UICollectionViewCell * cell = (UICollectionViewCell *)[col

iOS开发tableView去掉顶部上部空表区域

tableview中的第一个cell 里上部 有空白区域,大概64像素 在viewDidLoad中加入如下代码 self.automaticallyAdjustsScrollViewInsets = NO; 原文地址:iOS开发tableView去掉顶部上部空表区域

IOS开发复习笔记(4)-TableView

总结几个TableView常用的代码 初始化方面 static string CellIndetifier="cellIndetifier"; -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{ return 1;//表中段数 } -(NSInterger)tableView:(UITableVIew *)tableView numberOfRowsInSection:(NSInteger)section{