UITableViewCell dequeueReusableCellWithIdentifier не в порядке - PullRequest
1 голос
/ 26 февраля 2011

У меня есть UITable с несколькими пользовательскими ячейками, которые содержат текстовые поля.Однако при прокрутке вверх и вниз порядок этих ячеек нарушается.

Я искал, и это не работает для меня, потому что у меня есть несколько UITextFields, где мне нужно получить пользовательский ввод для них.

UITableViewCell, показывающий строки indexpath не по порядку

Спасибо

Ответы [ 3 ]

1 голос
/ 27 февраля 2011

Вам нужно либо использовать уникальный идентификатор для каждой из ячеек, либо вообще не использовать механизм удаления из очереди.Если вы делаете последнее, сохраните ссылку на каждую ячейку в соответствующей переменной экземпляра или добавьте их все в коллекцию, хранящуюся в переменной экземпляра.

Если вы решите пойти по этому пути, вы можетесделать это одним из двух способов: либо создать ячейки в Интерфейсном Разработчике (что было бы удобно, потому что в них уже могли быть вложенные текстовые поля, удобно расположенные и т. д.) и соединить их с помощью выходов, либо создать ячейки программно вviewDidLoad или в методе init....

В любом случае вам больше не нужно будет вызывать dequeueReusableCellWithIdentifier:;вместо этого вы можете просто вернуть экземпляры ячеек, которые вы уже создали.

0 голосов
/ 26 февраля 2011

Вот мой код. CustomTextFieldCell - это ячейка с UITextField. и немного информации. Однако заполненное значение и порядок этих изменений при прокрутке.

    static NSString *CellIdentifier = @"CustomTextFieldCell";
    CustomTextFieldCell *cell = (CustomTextFieldCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil) {

        NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomTextFieldCell" owner:nil options:nil];


        for (id currentObject in topLevelObjects) {
            if ([currentObject isKindOfClass:[UITableViewCell class]]) {
                cell = (CustomTextFieldCell *) currentObject;
                break;
            }
        }
    }
0 голосов
/ 26 февраля 2011

@ Дильшан, вы можете сделать что-то подобное в своем коде, чтобы достичь того, чего вы хотите.

.
.
.
if(cell == nil)
{
// create your cell in this block of quotes in the cellForRowAtIndexPath: method to avoid making of the cells again, so that your textfield value remain as it is.
.
.
.
//place all the code in this block only.
}
[cell autorelease];
return cell;

извините, у меня нет xcode дома, поэтому я не могу дать вам какой-либо конкретный код.

но я думаю, вы поняли.
веселит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...