當有很多行輸入框在tableview上超出了手機的屏幕的時候,上面原來有的字消失,數據沒有保存。 當你划出屏幕的時候,是cell被替換(不是釋放)了,然后又重新構建了一個textField,已經不是以前的那個,所以肯定是空的。不過這里倒是有個好玩的,就是 如果你正在編輯某個textField,你把它划出屏幕,這個textfield所在的cell是不會釋放的,內容也還在,不過這點倒是對整體沒有幫助
這個與重用沒有什么關系的,在不使用重用機制的情況下,當你划出屏幕外時cell也會被釋放,在不使用重用的機制的情況下可以使用__weak來修飾UITableViewCell指針 成員變量,然后在tableViewCell構建的時候,讓它指向某個cell,然后在cell構建之前輸入它
__weak UITableViewCell* _testCell;
if
(indexPath.row ==
1
) {
NSLog(@
"_testCell >>> %@"
,_testCell);
if
(_testCell != nil) {
//如果不為空就直接返回這個cell
return
_testCell;
}
}
但是這種辦法只能保存indexPath.row == 1的情況下才能保存
可以使用一個字典保存我們輸入的數據,根據indexpath.row的來決定字典的key,然后在一一取出,這樣就可以了,但是有點麻煩。
textfield.tag = row;
保存
[dicc setObject:field.text forKey:[NSString stringWithFormat:@"%ld",field.tag]];