iOS开发 UITableView中cell嵌套UITextField(UITextView)引起的复用问题
2017-08-10 15:13
585 查看
不喜欢说废话,如果你选择看这篇文章,那对tableView就有一定的了解,所以我也不多说了。在开发项目中遇到了一个问题,在自定义cell中添加了UITextField,可是在tableView来回滚动中,原来在UITextField中输入的数据居然不见了,下面就来分享下自己是如何解决的。
在.h文件中
在.m文件中
2.在TableViewController中监听textField变化的值,并通过字典把变化的值和cell的indexPath.row进行一一对应
微信关注:
第二步:
回复关键字:我要资料
整体思路:
找到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开发资料
第一步:微信关注:
第二步:
回复关键字:我要资料
相关文章推荐
- iOS开发之UI学习-UITableView的复用机制
- iOS开发之UITableView优化问题
- iOS开发-简述UITableView中cell的重用问题
- iOS开发:UITableView加载多张照片导致内存上涨的问题
- iOS UITableView 引起的崩溃问题
- iOS开发笔记>> 简述UItableView 的复用机制
- iOS开发:UITableView加载多张照片导致内存上涨的问题
- iOS开发-关于UITableView去掉粘性的问题
- iOS开发——项目实战总结&UITableView性能优化与卡顿问题
- iOS开发之UITableView点击头部控件图片旋转问题
- iOS开发:UITableView加载多张照片导致内存上涨的问题
- IOS开发UI展示之UITableView ──分页加载
- 打开键盘遮住View的问题解决方法-IOS开发
- 【iOS-Cocos2d游戏开发之七】在cocos2d中添加/删除系统组件,并解决View设置透明会影响View中的其他组件的问题!更新解决添加组件Cocos2d动画停止播放的BUG】
- 打开键盘遮住View的问题解决方法-IOS开发
- IOS开发中UITableView和UITableViewCell的几种样式
- ios开发:UITableView详解
- IOS开发问题解决之UIAlertView调用UIActionSheet后灰色背景一直存在
- iOS开发presentModalViewController ,若有UITextField,键盘无法下去的问题
- iOS开发笔记--UITableView入门