Символы, не очищенные в UITextField внутри UITableViewCell - PullRequest
0 голосов
/ 17 января 2012

Я использую таблицу для редактирования атрибутов модельного объекта (экземпляр аннотации). Ячейки в таблице соответствуют различным атрибутам класса Annotation:

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cellAnnotation"];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue2  reuseIdentifier:@"cellAnnotation"] autorelease];
    }
    [[cell textLabel] setText:@"Category"];
    categoryField = [[UITextField alloc] initWithFrame:CGRectMake(90, 8, 200, 25)];
    [categoryField setAutocorrectionType:UITextAutocorrectionTypeNo];
    [categoryField setFont:[UIFont fontWithName:@"Verdana" size:15]];
    [categoryField setText:[[annotation category] name]];
    [categoryField setDelegate:self];
    [[cell contentView] addSubview:categoryField];
    [categoryField release];
    return cell;

Удивительно, но если я перезагружаю данные в методе контроллера viewWillAppear, то получаю странное поведение: символы в UITextField не будут очищены при нажатии клавиши возврата, хотя их нет при отставке первого респондента в UITextField и извлекая его текстовое свойство. Может кто-нибудь мне помочь? Заранее спасибо.

1 Ответ

1 голос
/ 17 января 2012

Вы не должны добавлять подпредставления в ячейку таблицы вне условия if (cell == nil) {...}. Ячейки таблицы подвергаются повторному циклу, поэтому каждый раз, когда вызывается cellForRowAtIndex, вы снова добавляете это подпредставление в ячейку таблицы, не удаляя старую. Возможно, поэтому текст выглядит не очищаемым, потому что вы добавляете несколько полей в ячейку друг над другом.

Посмотрите этот другой ответ, который я написал для более подробного объяснения:

cellForRowAtIndexPath управление памятью

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