在我问这个问题之前,我经常搜索并看到一些答案,但没有一个可以帮助我,所以我决定再问一遍,...感谢您的帮助
我知道有两种方法可以解决这个问题,一种是将tableviewcell值存储在数组中,另一种是避免重用它,但我无法实现它们,
我有自己的tableviewcell里面有一个文本字段和一个按钮,当一个按钮点击一个在tableview底部添加另一个tableviewcell时;
当我实现第一个解决方案时,我从textfield.supperview获取tableviewcell,如下所示:
-(void)textFieldDidEndEditing:(UITextField *)textField
{
NSLog(@"TextFileld Value : %@" , textField.text);
DivideTableViewCell *cell = (DivideTableViewCell *)textField.superview;
NSIndexPath *indexPath = [uiTableView indexPathForCell:cell];
NSLog(@"index Path %i" , indexPath.row);
}
但每次indexPath.row为0且我都无法更新我的数据源数组....
并且不幸的是我也无法实施第二个解决方案......
非常感谢您的帮助:)
答案 0 :(得分:0)
如果您需要存储TableViewCells,请尝试以下操作。
在TableViewController的init方法中有一个NSMutableDictionary实例变量并对其进行alloc / init(不要忘记在dealloc中释放它)。
- (id)init {
self = [super init];
if (self) {
ivarDictionary = [[NSMutableDictionary alloc] init];
}
return self;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
DivideTableViewCell *cell = [ivarDictionary objectForKey:[NSNumber numberWithInt:indexPath.row]];
if (!cell) {
cell = [[DivideTableViewCell alloc] init];
[iverDictionary setObject:cell forKey:[NSNumber numberWithInt:indexPath.row]];
// Cell setup 1
}
// Cell setup 2
return cell;
}
从那里你可以在Setup 1区域设置你需要的所有单元,或者如果你想在每次调用单元时进行一些设置,那么使用Setup 2。
请注意,在最小化内存使用方面,这不是一个好主意,我不会将此方法用于超过20-30个单元格的任何内容。
您仍然需要使用TextField委托方法来提取输入的文本,您可能还需要在创建时将indexPath变量解析为每个单元格,这样您就可以知道正在编辑哪个文本字段。
答案 1 :(得分:0)
I Think you should store all the values of the text field in an array and replace with the changed value every time like i did,see my code ,