iPhone实现自定义多选列表

iOS 分类菜单多选 实现了分类菜单多选,但是最多只能有两个区,效果图请看http://code.cocoachina.com/view/128762 立即下载
首先我们先来看一下效果图:

一般大家都是用UITableView自己的编辑模式来实现CheckBox的,这里我们用自定义Cell和两张图片来实现,一张是未选中,一张是选中的图片

好了,我们首先来看一下代码:首先在Cell中定义了三个控件,两个UILabel和一个UIImageView

  1. #import <UIKit/UIKit.h>  
  2.   
  3. @interface MultiChoceCell : UITableViewCell  
  4. @property (strong, nonatomic) IBOutlet UILabel *nameLabel;  
  5. @property (strong, nonatomic) IBOutlet UILabel *departLable;  
  6. @property (strong, nonatomic) IBOutlet UIImageView *checkBox;  
  7.   
  8. @end  

好了,这个相信各位学过UITableViewCell的同学都应该知道,接下来,我们就来写最主要的ViewController了

在头文件.h文件里,我们首先定义了一个协议专门用来做回调的,还定义了一个选项数组和选中的数组,还有一个UITableView,我个人喜欢在ViewController里套上UITableView,因为可以改变TableView的大小。

  1. #import <UIKit/UIKit.h>  
  2.   
  3. @class MultiChoceViewController;  
  4.   
  5. @protocol MultiChoceDelegate <NSObject>  
  6.   
  7. @required  
  8.   
  9. -(void)MultiChoceSelectArray:(NSArray *)array ViewController:(MultiChoceViewController *)controller;  
  10.   
  11. @end  
  12.   
  13.   
  14. @interface MultiChoceViewController : UIViewController<UITableViewDataSource, UITableViewDelegate>  
  15.   
  16. @property(nonatomic, strong)NSArray *itemArray;  
  17. @property(nonatomic, strong)NSMutableArray *selectArray;  
  18. @property (strong, nonatomic) IBOutlet UITableView *mTableView;  
  19. @property (nonatomic, strong) id<MultiChoceDelegate> delegate;  
  20.   
  21. - (IBAction)backAction:(id)sender;  
  22. - (IBAction)okAction:(id)sender;  
  23.   
  24. @end  
接下来,我们看一下实现方式,在ViewDidLoad中将UITableView的颜色去掉,然后就是定义UITableViewDataSource和UITableViewDelegate了,看一下代码吧:

  1. #import "MultiChoceViewController.h"  
  2. #import "MultiChoceCell.h"  
  3.   
  4. @interface MultiChoceViewController ()  
  5.   
  6. @end  
  7.   
  8. @implementation MultiChoceViewController  
  9.   
  10. - (void)viewDidLoad  
  11. {  
  12.     [super viewDidLoad];  
  13.       
  14.     [_mTableView setBackgroundColor:[UIColor clearColor]];  
  15.       
  16.     // Do any additional setup after loading the view from its nib.  
  17. }  
  18.   
  19. - (void)didReceiveMemoryWarning  
  20. {  
  21.     [super didReceiveMemoryWarning];  
  22.     // Dispose of any resources that can be recreated.  
  23. }  
  24.   
  25. #pragma mark UITableViewDataSource  
  26. - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{  
  27.       
  28.     return [_itemArray count];  
  29. }  
  30.   
  31.   
  32. - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{  
  33.       
  34.     static NSString *identifier = @"itemCell";  
  35.       
  36.     MultiChoceCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];  
  37.       
  38.     if (cell == nil) {  
  39.         NSArray *array = [[NSBundle mainBundle] loadNibNamed:@"MultiChoceCell" owner:self options:nil];  
  40.           
  41.         cell = [array objectAtIndex:0];  
  42.     }  
  43.       
  44.     NSDictionary *dict = [_itemArray objectAtIndex:indexPath.row];  
  45.       
  46.     cell.nameLabel.text = [dict objectForKey:@"UserName"];  
  47.     cell.departLable.text = [dict objectForKey:@"DepartMent"];  
  48.       
  49.     if ([_selectArray containsObject:dict]) {  
  50.         cell.checkBox.image = [UIImage imageNamed:@"checked.png"];  
  51.     }  
  52.       
  53.     return cell;  
  54.   
  55. }  
  56.   
  57. - (IBAction)backAction:(id)sender {  
  58.       
  59.     [self.navigationController popViewControllerAnimated:YES];  
  60. }  
  61.   
  62. - (IBAction)okAction:(id)sender {  
  63.       
  64.     [_delegate MultiChoceSelectArray:_selectArray ViewController:self];  
  65.       
  66. }  
  67.   
  68. #pragma mark UITableViewDelegate  
  69. - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{  
  70.       
  71.     NSDictionary *selectDict = [_itemArray objectAtIndex:indexPath.row];  
  1.     //判断数据是否在选择列表中  
  2.     if ([_selectArray containsObject:selectDict]) {  
  3.         [_selectArray removeObject:selectDict];  
  4.     }else{  
  5.         [_selectArray addObject:selectDict];  
  6.     }  
  7.       
  8.     [_mTableView reloadData];  
  9. }  
  10. @end  
这里没什么特别的,只是在didSelectRowAtIndexPath中写了一句判断语句

在调用的页面,我们把itemArray和selectArray传入

  1. MultiChoceViewController *controlller = [[MultiChoceViewController alloc] initWithNibName:@"MultiChoceViewController" bundle:nil];  
  2.     controlller.delegate = self;  
  3.       
  4.     controlller.itemArray = userArray;  
  5.     controlller.selectArray = selectArray;  
  6.       
  7.     [self.navigationController pushViewController:controlller animated:YES];  
并实现多选方法中中协议来关掉当前页面,并将选中的数据传出

  1. #pragma mark MultiChoceDelegate  
  2. -(void)MultiChoceSelectArray:(NSMutableArray *)array ViewController:(MultiChoceViewController *)controller{  
  3.       
  4.     selectArray = array;  
  5.       
  6.     [self.navigationController popViewControllerAnimated:YES];  
  7.       
  8. }  
这里有很重要的一点就是委托方法的应用,如果前面一个页面需要后面页面的数据,就要想到用委托来实现回调,其实只要掌握了委托一些页面间的传值也就不难了,这篇文章只是给大家做个介绍,但如何做出自己想要的效果还是需要多多练习和学习的。谢谢
iOS 三级展开列表 一个很不错的三级展开效果的例子,写的很不错,提供给学习iOS的童靴使用。 立即下载

相关推荐

ios 下拉菜单 支持多选

ios 下拉菜单 可以收缩 非常好

iOS开发中的单选与多选

在前端开发中如果要拥有一个单选或者多选功能十分简单,因为HTML中有现成的标签可以很方便的实现单选或者多选效果,比如这样写上几句代码就能拥有最原始的选择效果。但是在iOS开发中就没有这么方便的控件了,如果要完成单选或者多选的功能还需要一些逻辑编码,并且可以选择的方案还是有很多的。在iOS开发中经常用于实现单选或者多选功能的控件是UITableView,并且,通过这个控件可以完成一个App80%的界面

陈云峰技术博客 4101

ios多选项下拉列表(Table)

ios多选项下拉列表(Table)源码,源码KDropDownMultipleSelection,该源码KDropDownMultipleSelection可以实现了汇集是单个选项的列表(Table)下拉效果的,还有一种是多个选项的下拉列表(Table)的效果。 Single or multiple selection in dropdownlist /-------------------- Selection-----------------------/ Use: [self showPopUpWithTitle:@"Select Country" withOption:arryList xy:CGPointMake(16, 150) size:CGSizeMake(287, 280) isMultiple:NO]; isMultiple =yes means Multiple Selection isMultiple =No Means Single Selection /------------------Change BackGroung Color of DropDownlist----------------/ [Dropobj SetBackGroundDropDwon_R:0.0 G:108.0 B:194.0 alpha:0.70]; /------------Delegate Methods-----------------/ For Single Selection Get Value (void)DropDownListView:(DropDownListView *)dropdownListView didSelectedIndex:(NSInteger)anIndex{ } For Mutiple Selection Get Values (void)DropDownListView:(DropDownListView )dropdownListView Datalist:(NSMutableArray)ArryData{ }

iOS单选和多选的实现

项目里经常会用到单选和多选,实现起来很简单,创建一个View作为选项框的载体,循环创建按钮视图,设定宽高,行间距和每行按钮数量都可根据具体情况灵活设置,具体实现如下:

Nefertari_YinC的博客 1106

FPGA实战笔记——SDRAM乒乓缓存与OV5640视频采集(VGA显示优化篇)

本文详细介绍了基于FPGA的SDRAM乒乓缓存技术在OV5640视频采集与VGA显示优化中的应用。通过设计多时钟域同步和双Bank乒乓缓存策略,有效解决了摄像头30fps输出与VGA 60fps显示之间的帧率不匹配问题,实现了720P高清视频的流畅稳定显示,为实时图像处理系统提供了可靠的硬件解决方案。

ss78901的博客 882

Wireshark 4.6 TCP 流图解析:3种拥塞控制算法可视化对比

本文深入解析Wireshark 4.6的TCP流图功能,通过可视化对比Reno、Cubic和BBR三种主流拥塞控制算法的性能特征。文章提供详细的实验环境搭建方法、流图分析工具使用技巧,以及算法调优建议,帮助网络工程师优化TCP性能。

weixin_29291573的博客 446

OC实现单选和多选按钮

本代码库暂时有OC封装,改天有空在补一个Swift封装的,主要是因为swift不是那么熟,怕出错,半天找不到问题多尴尬呀! 先附上demo下载地址优快云:http://download.youkuaiyun.com/detail/qq_34863867/9593700 gitHub地址:https://github.com/SZLCode/RadioAndCheck 先上传两张效果图: ...

weixin_30621919的博客 334

数字图像处理第九章笔记

目录一、腐蚀与膨胀1、腐蚀2、膨胀3、对偶性4、开操作与闭操作二、一些基本的形态学算法1、边界提取2、孔洞填充3、连通分量提取4、凸壳5、细化6、粗化7、骨架8、形态学重建三、灰度级形态学1、腐蚀和膨胀2、开运算和闭运算3、灰度级形态学算法 一、腐蚀与膨胀 1、腐蚀 腐蚀可以去除图像的某些部分。 2、膨胀 膨胀可以连接裂缝。 3、对偶性 膨胀和腐蚀彼此关于集合求补运算和反射运算是对偶的 4、开操作与闭操作 开操作:B对A先腐蚀,再进行膨胀 可以平滑物体轮廓,断开较窄的狭颈并消除较细的突出物。 闭操作

方悔读书迟 1373

【ios】可多选的列表弹出框(附源码)

取消的时候会把数组清空,点击多选的时候会实时的往数组中添加相应元素 使用方法很简单,将下边的文件放入项目中 按照示例中的使用方法使用就可以了 取消用的是block,实时选中没有使用原生的多选,写的是协议 喜欢的给个star: POST:https://github.com/canwhite/QCMultiSelectPopView 另附一个当初写的单选的列表弹出框: PO...

当白的技术小窝 1874

网格聚类 Grid Clustering/Grid-based Clustering

本文主要简单介绍了网格聚类的基本概念,优缺点,应用场景,建模时的注意事项,评价指标,实现方法,python示例和模型参数等。

JasonH2021的博客 4827

别再只用跳层连接了!手把手教你用DASI和MDCR模块提升红外小目标检测精度

本文详细介绍了如何利用DASI和MDCR模块提升红外小目标检测精度。通过分析传统跳层连接的缺陷,提出维度感知的特征选择性融合(DASI)和多尺度感受野精炼器(MDCR)的创新方案,显著提升小目标检测性能。实验证明,该方法在多个场景下AP@0.5提升达15.4%,特别适用于安防监控和遥感图像分析。

weixin_28715081的博客 224

ios 标签功能 支持单选和多选,以及不同的排布方式

枚举说明 ///留白 typedef NS_ENUM(NSInteger, CZHTagsViewStyle) { //默认的,标签文字两边留白是根据代理里面的值算 CZHTagsViewStyleDefault, //标签文字两边留白根据屏幕宽度自适应 CZHTagsViewStyleFit }; //如果CZHTagsViewStyle == CZ...

不归的道路 1525

lammps蒙特卡洛MC模拟案例

在lammps中,和MC相关的模拟命令有三个:fix gcmc、fix atom/swap、fix sgcmc。在一个lammps模拟中,mc和md可同时存在,间隔运行,所以设置fix sgcmc命令的同时,可以同时设置系综(nve、nvt或者npt)。lammps官网自带案例中也有一个fix sgcmc的案例,主要模拟FeCu合金的MC建模。sgcmc命令可应用到合金的模拟中,如短程有序模拟。MC运行间隔为100步,最终的浓度比例为0.02,也就是2%的Fe原子交换为Cu原子。大家好,我是小马老师。

lammps_jiayou的博客 1824

[iPhone中级]iPhone实现自定义多选列表

好久没更新博客了,今天写了一个自定义的多选列表,可以跟爱学习的各位进行分享,首先我们先来看一下效果图: 一般大家都是用UITableView自己的编辑模式来实现CheckBox的,这里我们用自定义Cell和两张图片来实现,一张是未选中,一张是选中的图片 好了,我们首先来看一下代码:首先在Cell中定义了三个控件,两个UILabel和一个UIImageView #import @int

kangkangz4的专栏 5787

AIGC实战——基于Transformer实现音乐生成

Transformer 是最流行的音乐生成技术之一,因为音乐可以视为一个序列预测问题,Transformer 模型将音符视为一个个符号的序列(类似于句子中的单词),从而用于生成音乐。Transformer 模型基于先前音符预测下一个音符,生成音乐作品。在本节中,将学习如何处理音乐数据,并应用 Transformer 生成与给定训练集风格相似的音乐。

盼小辉丶的博客 1万+

部署模型:Libtorch使用笔记【Pytorch的C++版本】【把用Pytorch训练好的模型打包保存为.pt格式,使用Libtorch去加载.pt格式模型,在C++工程中去用就好了】

A : Libtorch是pytorch的C++版本,现在的很多大型项目都是用C++写的,想使用训练好的模型,需要通过caffe等方式去集成,比较麻烦。这里pytorch官方提出了Libtorch,我们就可以把pytorch训练好的模型,打包起来,直接在C++工程中去用就好了,相比较caffe等,非常方便!虽然对于许多需要动态性和易迭代性的场景来说,Python是一种合适且首选的语言,但在同样的情况下,Python的这些特性恰恰是不利的。生产环境是一个需要低延迟和有严格部署要求的领域,一般选择C++。

u013250861的博客 2948

UITableView多选删除,类似mail中的多选删除效果

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://rainbird.blog.51cto.com/211214/636270 前面有说过UITableView划动删除的实现>>,效果还算酷,其实笔者一直看着iphone里自带的mail程序的多选删除功能心里痒痒,只是一直没时间研究是怎么实现的.这不花了半天功夫有时间搞定了,特

fangjjj的专栏 409

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

iphone开发之自定义下拉列表UIcombobox控件

很多时候我们都会用到下拉列表框,闲着没事自己实现了一个共享之。 代码如下: // // CLOCombobox.h // CLOComboboxText // // Created by Cloay on 12-8-9. // Copyright (c) 2012年 __MyCompanyName__. All rights reserved. // #import @inter

小小程序员 欢迎光临!专注于移动互联网! 4196

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

iOS开发_iphone开发_iphone界面如何实现下拉列表

代码如下:          #import     @interface DropDownList : UIView {     UITextField* textField;   //文本输入框     NSArray* list;            //下拉列表数据     BOOL showList;             //是否弹出下拉列表     UITabl

计算机学习园 2444

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

iPhone界面如何实现下拉列表

代码如下:     #import     @interface DropDownList : UIView {     UITextField* textField;   //文本输入框     NSArray* list;            //下拉列表数据     BOOL showList;             //是否弹出下拉列表     UITableVie

感激赐教的专栏 2213

iphone 界面实现下拉列表

#import @interface DropDownList : UIView { UITextField* textField;   //文本输入框 NSArray* list;            //下拉列表数据 BOOL showList;             //是否弹出下拉列表 UITableView* listView;    //下拉列表 CGRec

huangbaoyu1840的专栏 2492

iphone导出通讯录到安卓_iPhone 短信美化,联系人可多选删除

用了这么多年的 iPhone,你知道短信页面可以美化吗,我相信大多数人都不知道。现在通讯手段越来越多样,QQ、微信都是我们常用的聊天方式,更有甚者,可以用淘宝、支付宝来聊天,也就是在这个趋势下,短信基本都用来接收验证码。相信大多数小伙伴短信都是这个样子的吧实属正常,果子在没美化之前,也是这个样子的,下面的操作就很有意思了,基本这些验证码前面都加上一个头像,好看又容易识别。如果你会使用快捷...

weixin_39636253的博客 569

iphone 快捷 自定义_如何在iPhone上自定义3D Touch快捷方式

iphone 快捷 自定义3D Touch isa terrific innovation, bringing a new level of functionality to iPhone. Usually, the 3D Touch shortcuts baked into app icons are just fine, but there are a few things you can ...

cum44153的博客 906
上一篇: 基于XMPP的IOS聊天客户端程序(IOS端三)
下一篇: IOS XMPP的实践
focusjava
博客等级 码龄14年 127粉丝 528原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值