смена ярлыков в uitableview - PullRequest
       7

смена ярлыков в uitableview

0 голосов
/ 10 августа 2010

Я использую табличное представление для редактирования объекта.

Я использую приведенный ниже код для создания ячейки uitableview.

Это работает хорошо, но каким-то образом при прокрутке ячеек меняется внутри.

static NSString *CellIdentifier2 = @"CustomCell Editable Identifier";

        cell = [theTableView dequeueReusableCellWithIdentifier:CellIdentifier2];
        if (cell == nil) {

            cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1
                                           reuseIdentifier:CellIdentifier2] autorelease];


            cell.textLabel.text = rowLabel;

            UITextField *theTextField = [[UITextField alloc] initWithFrame:CGRectMake(120, 10, 170, 25)];

            theTextField.textAlignment = UITextAlignmentRight;

            cell.editingAccessoryView =theTextField;
            theTextField.tag = 602; 
            if ([rowKey isEqualToString:@"phone_no"]) {
                [theTextField setKeyboardType:UIKeyboardTypeNumberPad];
            }
            theTextField.text = [rowValue ddEventValueDisplay];
            [theTextField release];
            return cell;

Может кто-нибудь сказать мне, где я не прав?

Ответы [ 3 ]

1 голос
/ 10 августа 2010

Приведенный выше код содержится в вашем вызове cellForRowAtIndexPath, верно?

Я не уверен, что это было результатом сбоя копирования и вставки, но вы хотите завершить выражение "if (cell == nil)) "блок сразу после вызова initWithStyle, в приведенном выше коде отсутствует пропущенная фигурная скобка.

1 голос
/ 10 августа 2010

Вы создаете метку, когда ячейка равна NIL.Поэтому каждый раз, когда вы прокручиваете, вызывается cellForRowAtIndexPath, и он проверяет, является ли ячейка NIL (что не на этот раз), поэтому ничего не выполняется, если в блоке if (cell == NILL).

Таким образом, чтобы установить текст метки, необходимо выделить эту метку из представления ячейки, а затем установить текст следующим образом:

UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier: CellIdentifier];

if (cell == nil) {

cell = [[[UITableViewCell alloc] initWithStyle: UITableViewCellStyleDefault reuseIdentifier: CellIdentifier] autorelease];

a = [[UILabelView alloc] init];
a.tag = 10;
[cell.contentView addSubview:a];

}

UILabelView * aView = [cell.contentView viewWithTag: 10];

aView.text = @ "Некоторый текст";

[cell.contentView addSubview: a];

 return cell;

} * * тысяча двадцать-один

0 голосов
/ 10 августа 2010

Похоже, вы настраиваете ячейку только при ее создании. Но когда вы получаете многоразовую ячейку от

cell = [theTableView dequeueReusableCellWithIdentifier:CellIdentifier2];

Вы не меняете это - но вы должны, они случайные: например, Вы хотите ячейку для строки = 1 и получить повторно использованную ячейку из строки = 3

Кстати: всегда лучше указывать весь код - вы не должны заставлять людей догадываться, что вы имеете в виду.

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