dequeueReusableCellWithIdentifier не удаляет пользовательский UITableViewCell из Nib?

У меня есть эта проблема в течение почти недели, и это действительно сводит меня с ума. Я прочитал много тем о Stackru, несмотря на успех. Надеюсь, кто-нибудь может мне помочь...

Ситуация:

Я получил UITableView с пользовательским UITableViewCell, который я загружаю из Nib. Я делаю это в ViewDidLoad TableView, как это:

[self.myTableView registerNib:[UINib nibWithNibName:@"DividendCell" bundle:nil] forCellReuseIdentifier:@"DividendReuseCell"];

Пользовательская ячейка имеет несколько ярлыков, в том числе: issueName а также issueType,

в cellForRowAtIndexPath метод, который я снимаю с многоразовой ячейки как это и назначаю метки:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    DividendCell *cell;
    cell = [self.myTableView dequeueReusableCellWithIdentifier:@"DividendReuseCell" forIndexPath:indexPath];

    dividend *div = [[[aAgendaItems objectAtIndex:indexPath.section] agendaItems] objectAtIndex:indexPath.row];
    [cell setDiv:div];

    return cell;
}

Я полагаю, мне не нужно проверять if (!cell) так как я использую пользовательский Nib, который всегда возвращает ячейку.

Но проблема в том, что похоже, что клетки не снимаются с очереди. Когда я прокручиваю вниз, я вижу, что надписи дублируются друг на друга. Я понятия не имею, что происходит не так. Я делал это в других классах и у меня не было проблем.

Любая помощь высоко ценится!:)

РЕДАКТИРОВАТЬ: Скриншот, чтобы лучше показать, что происходит не так:

http://imgur.com/DFAqsai

РЕДАКТИРОВАТЬ 2 Вот код для DividendCell Я использую этот метод для назначения меток.

-(void)setDiv:(dividend *)div {
    issueName.text = [[NSString alloc] initWithString:[[[div RelatedIssue] ShortName] capitalizedString]];
    issueType.text = [[NSString alloc] initWithString:[div Description]];

    issueCurrency.text = [[NSString alloc] initWithString:[div Currency]];
    issueKoers.text = [[NSString alloc] initWithString:[super formatDouble:[div BrutValue]]];

    NSDateFormatter *format = [[NSDateFormatter alloc] init];
    NSLocale *loc = [[NSLocale alloc] initWithLocaleIdentifier:@"nl_NL"];
    [format setLocale:loc];
    [format setDateFormat:@"dd MMM"];

    exDividendDate.text = [[NSString alloc] initWithString:[format stringFromDate:[div ExDividendDate]]];

    NSComparisonResult result = [[div PaymentDate] compare:[NSDate date]];
    exPaymentDate.text = [[NSString alloc] initWithString:[format stringFromDate:[div PaymentDate]]];
    if (result==NSOrderedAscending) {
        [exPaymentDate setTextColor:[UIColor darkGrayColor]];
    } else {
        [exPaymentDate setTextColor:[UIColor blackColor]];
    }
    [loc release];
}

2 ответа

Я думаю, что вы не дали нужную высоту ячейки, если используете heightfortherowAtIndexPath метод.

Редактировать:

Вы установили идентификатор в вашем.xib файле ячейки?

Если вы видите свои ярлыки, это означает, что ваши клетки снимаются с очереди. Проблема, скорее всего, в том, что ваши клетки имеют неправильную форму относительно расположения этикеток. Если вы НЕ используете автоматический макет, убедитесь, что он не отмечен в вашем nib-файле, и убедитесь, что вы вернули правильную высоту forRow, либо установив self.myTableview.rowHeight на соответствующую высоту строки, либо используя метод делегата. Если ваши ярлыки появляются друг над другом, это, вероятно, проблема с автоматической разметкой в ​​вашей ячейке *.xib.

Другие вопросы по тегам