Сброс пользовательского содержимого UITableViewCells при его повторном использовании - PullRequest
0 голосов
/ 19 августа 2011

Я использую следующий код для создания пользовательского UITableViewCell с меткой в ​​нем.

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

Может кто-нибудь сказать мне, как я это сделаю, пожалуйста?

if (indexPath.section == 2) {
    // Resetting the elements in the cell prior to use.

    UIView *blankCell;
    UILabel *methodText;

    static NSString *methodCellIdentifier = @"Method Cell";

    methodCell = [tableView dequeueReusableCellWithIdentifier: methodCellIdentifier];

    if (methodCell == nil)
    {
        methodCell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier: methodCellIdentifier] autorelease];
    }

    blankCell = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
    methodText = [[UILabel alloc] initWithFrame:CGRectMake(15, 7, 305, 44)];
    methodText.text = [[self.recipeDict objectForKey:@"Method"] objectAtIndex: indexPath.row];
    NSLog(@"methodText.text = %@", methodText.text);
    [methodText setLineBreakMode:UILineBreakModeWordWrap];
    [methodText setNumberOfLines:0];
    [methodText sizeToFit];

    [blankCell addSubview:methodText];
    [methodCell.contentView addSubview:blankCell];

    [methodText release];

    methodCell.contentMode = UIViewContentModeRedraw;

    return methodCell;
}

1 Ответ

1 голос
/ 19 августа 2011

Переместите код, который создает ваши подпредставления, в блок, который проверяет, имеет ли methodCell значение nil. Обновляйте только их содержимое за пределами этого блока. Чтобы получить к ним доступ вне блока, установите для них значения тегов при их создании и используйте viewWithTag для поиска и обновления их содержимого:

 if (methodCell == nil)
    {
        methodCell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier: methodCellIdentifier] autorelease];
        blankCell = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
        methodText = [[UILabel alloc] initWithFrame:CGRectMake(15, 7, 305, 44)];
        [methodText setLineBreakMode:UILineBreakModeWordWrap];
        [methodText setNumberOfLines:0];
        [blankCell addSubview:methodText];
        [methodCell.contentView addSubview:blankCell];

        methodText.tag = 1;

        [methodText release];
        [blankCell release];

        methodCell.contentMode = UIViewContentModeRedraw;
    }

    methodText = (UITextField*)[methodCell viewWithTag:1];
    methodText.text = [[self.recipeDict objectForKey:@"Method"] objectAtIndex: indexPath.row];
    NSLog(@"methodText.text = %@", methodText.text);
    [methodText sizeToFit];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...