UITextField turn places with UILabel in the UITableView during scrolling
I have a strange problem with UITableView and UITextField inside the cell (as subview).
In the window view (UITableView, grouped, scrollable) there are two sections.
First section has got 5 rows:
1.1 - cell with UITextField
1.2 - cell with UILabel
1.3 - cell
1.4 - cell with UITextField
1.5 - cell with UISwitchButton
and the second section has got 1 row:
2.1 - cell
Scenario: I touch row 1.1
and the keyboard appear. I can enter some text.
Problem: when I scroll down the UITableView to the row 开发者_JAVA技巧2.1
without pressing Done
on the keyboard (so the keyboard is still on the screen) and than I press Done
something strange happen and the subview of cell 1.2
with UILabel turn places with subview of cell 1.1
with UITextField.
I have tried workaround with self.tableView.scrollEnabled = NO;
it helps, but I really do want to use scrolling.
This is most likely caused because your tableview re-uses the cells. The UITableView attempts to keep as little cells in memory as possible, so when you have 5 rows on screen your tableview will look like this:
cell 1
cell 2
cell 3
cell 4
cell 5
If you then scroll down so cell1 and 2 are hidden your tableview will look like this
cell 3
cell 4
cell 5
cell 1
cell 2
The tableview can do this, because you should set the data outside of the actual cell creation and you should use a different cell identifier for cells that are different from the other.
In your case not setting the re-use identifier to nil, or using a unique re-use identifier for every different cell you are going to show should solve the problem.
精彩评论