views:

135

answers:

1

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 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.

+1  A: 

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.

klaaspieter