dequeueReusableCellWithIdentifier不会从Nib中出列自定义UITableViewCell?

时间:2014-07-21 10:42:04

标签: ios iphone objective-c uitableview

我现在已经有这个问题差不多一个星期了,这让我很生气。尽管取得了任何成功,我还是在Stackoverflow上阅读了很多主题。希望有人能帮帮我...

情况:

我有一个带有自定义UITableViewCell的UITableView,我从Nib加载。我在TableView的ViewDidLoad中这样做:

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

自定义单元格包含一些标签,包括:issueNameissueType

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 个答案:

答案 0 :(得分:0)

如果您可以看到标签,则表示您的单元格正在出列。问题可能是您的细胞格式错误,标签的布局方式。如果您不使用自动布局,请确保未在您的nib文件中检查它,并确保通过将self.myTableview.rowHeight设置为正确的行高或使用委托方法返回正确的高度。如果您的标签显示在彼此之上,则可能是* .xib单元格中的自动布局问题。

答案 1 :(得分:0)

如果使用heightfortherowAtIndexPath方法,我认为你没有给出适当的Cell高度。

修改:

您是否在单元格的.xib文件中设置了标识符