iOS开发 UITableView中cell嵌套UITextField(UITextView)引起的复用问题
来源:互联网 发布:大宗交易数据 编辑:程序博客网 时间:2024/06/05 20:29
不喜欢说废话,如果你选择看这篇文章,那对tableView就有一定的了解,所以我也不多说了。在开发项目中遇到了一个问题,在自定义cell中添加了UITextField,可是在tableView来回滚动中,原来在UITextField中输入的数据居然不见了,下面就来分享下自己是如何解决的。
整体思路:
找到textField的代理方法先监听他的数据变化,然后通过字典把变化的数据和cell的行数进行绑定,因为cell复用他的每个cell的indexPah.row是不会变的,然后通过一个数组将字典里保存的key取出来每次重绘cell的时候进行判断,/如果字典中保存当前的值,那么直接从字典里取出值然后赋给UITextField的text就完美解决啦。
代码实现:
1.通过UITextField的代理方法
在.h文件中
#import "HWBaseCell.h"@interface HWTitleTextFieldCell : HWBaseCell@property (weak, nonatomic) IBOutlet UITextField *tfUrlBlock;@property (nonatomic, copy)void (^saveData)(NSString *text);@end
在.m文件中
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { if (_saveData) { _saveData([textField.text stringByReplacingCharactersInRange:range withString:string]); } return YES;}
2.在TableViewController中监听textField变化的值,并通过字典把变化的值和cell的indexPath.row进行一一对应
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ NSString *identifier = NSStringFromClass([HWTitleTextFieldCell class]); HWTitleTextFieldCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier]; if (cell == nil) { Class cellClass = NSClassFromString(identifier); cell = [[cellClass alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier]; } cell.saveData = ^(NSString *text){ //将发生改变的textField的内容对应cell的行 [self.dataDict setValue:text forKey:FStr(@"%ld",indexPath.row)]; }; // 取出存储所有textFileld改变对应的行 NSArray *indexArr = [self.dataDict allKeys]; if ([indexArr containsObject:FStr(@"%ld",indexPath.row)]) { // 如果字典中保存当前的值,那么直接从字典里取出值然后赋给UITextField的text cell.tfUrlBlock.text = [self.dataDict objectForKey:FStr(@"%ld",indexPath.row)]; } else { cell.tfUrlBlock.text =nil' return cell; }
免费获取IT界4T开发资料
第一步:
微信关注:
第二步:
回复关键字:我要资料
阅读全文
0 0
- iOS开发 UITableView中cell嵌套UITextField(UITextView)引起的复用问题
- iOS开发-简述UITableView中cell的重用问题
- iOS开发:深入理解UITableView的cell复用原理
- iOS中UITextField、UITextView的字数限制
- iOS开发基础-UITextView&UITextField
- UITableViewCell中嵌套UITableView,用UITextView加载HTML数据
- UITableview中cell的复用机制
- iOS iOS中UITextField和UITextView屏蔽表情符号的输入
- ios UITableView中Cell的重用机制
- ios UITableView中Cell的操作
- ios UITableView中Cell的重用机制
- iOS - UITextView、UITextField监听文本框中内容的变化
- iOS UITextField,UITextView键盘遮挡问题
- iOS开发 UITableView之cell
- iOS开发之UITableView中Cell左滑自定义事件
- iOS开发笔记--解决UITableView中Cell重用机制导致内容出错的方法总结
- iOS开发笔记--解决UITableView中Cell重用机制导致内容出错的方法总结
- iOS开发中实现UITableView的Cell左划删除等自定义功能
- 漂流调研
- 使用ImageLoader获取图片,使用异步在网上请求json,然后解析,在listview中显示出来
- Rabbitmq基础概念+入门案例
- 深度学习学习7步骤
- 使用 RMI + ZooKeeper 实现远程调用框架
- iOS开发 UITableView中cell嵌套UITextField(UITextView)引起的复用问题
- 转载:js版本的设计模式
- Numpy、Pandas和Matplotlib包基础知识
- Codeforces 450B-Jzzhu and Sequences (矩阵快速幂)
- 监控工具Monit安装与部署
- 解决git push 需要输入帐号密码
- 匿名 适配器模式
- 哪里有好的Python视频教程推荐
- mysql数据库的优化整理之查询优化