开发者

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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜