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, который всегда возвращает ячейку.
Но проблема в том, что похоже, что клетки не снимаются с очереди. Когда я прокручиваю вниз, я вижу, что надписи дублируются друг на друга. Я понятия не имею, что происходит не так. Я делал это в других классах и у меня не было проблем.
Любая помощь высоко ценится!:)
РЕДАКТИРОВАТЬ: Скриншот, чтобы лучше показать, что происходит не так:
РЕДАКТИРОВАТЬ 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.