При прокрутке в моем UITableView скрытые строки странно возвращаются - PullRequest
0 голосов
/ 05 сентября 2011

У меня возникли странные проблемы с моим UITableView.У меня есть GroupView TableView с 1 ​​строкой на раздел.В каждой строке есть текстовое поле.Когда меня не заставляют прокручивать, все отображается правильно.

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

Ячейка http://dcsl.info/b/Untitled.png Любой совет?

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}

// Configure the cell...
if(indexPath.section < [sectionArray count]) {
    UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(20, 10,580, 31)];
    textField.tag = indexPath.section + 22;
    textField.autocorrectionType = UITextAutocorrectionTypeNo;
    textField.autocapitalizationType = UITextAutocapitalizationTypeNone;
    textField.delegate = self;
    textField.text = [item.rechnerValues objectAtIndex:indexPath.section+1];

    [cell.contentView addSubview:textField];
}
return cell;
}

Ответы [ 3 ]

2 голосов
/ 05 сентября 2011

Это потому, что вы повторно используете ячейки. Поэтому ранее созданные textFields не удаляются. Когда вы прокручиваете, вы добавляете новое и новое на другое.

Решения:

  1. Удалить ранее созданное textFields
  2. (лучше) Просто установите соответствующий text для уже созданного текстового поля
1 голос
/ 05 сентября 2011
 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {     
     static NSString *CellIdentifier = @"Cell";
   UITextField *textField;
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];

    if(indexPath.section < [sectionArray count]) {
        textField = [[UITextField alloc] initWithFrame:CGRectMake(20, 10,580, 31)];
        textField.tag = indexPath.section + 22;
        textField.autocorrectionType = UITextAutocorrectionTypeNo;
        textField.autocapitalizationType = UITextAutocapitalizationTypeNone;
        textField.delegate = self;
        [cell.contentView addSubview:textField];
        [textField release];
    }
}
else {
       textField = (id)[cell.contentView viewWithTag:indexPath.section+22];
}

    textField.text = [item.rechnerValues objectAtIndex:indexPath.section+1];

    // Configure the cell...


return cell;

}

1 голос
/ 05 сентября 2011
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];


        UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(20, 10,580, 31)];
        textField.tag = indexPath.section + 22;
        textField.autocorrectionType = UITextAutocorrectionTypeNo;
        textField.autocapitalizationType = UITextAutocapitalizationTypeNone;
        textField.delegate = self;
        textField.text = [item.rechnerValues objectAtIndex:indexPath.section+1];

        [cell.contentView addSubview:textField];

        [textField release];

    }
    else{
            // Configure the cell...
        if(indexPath.section < [sectionArray count]) {

            UITextField *textFld=(UITextField*)[cell.contentView viewWithTag:indexPath.section + 22];

            if(textFld){

                textFld.text=[item.rechnerValues objectAtIndex:indexPath.section+1];

            }            



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