我遇到了从nib加载UITableViewCell的问题。我使用苹果文档,但我不知道我哪里出错了。通过IB创建的UITableViewCell包含5个UIlable。笔尖是完美加载但问题是当我滚动标签的文本自动更改为不同。 以下是我在indexpath的行的单元格代码。请让我知道我要去哪里。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
int rowNo = [indexPath row];
NSLog(@"Row No:%d",rowNo);
Transfer *tempTransferRecord =(Transfer*)[self.transferInformation objectAtIndex:rowNo];
seasonYear.text=tempTransferRecord.seasonYear;
longName.text=tempTransferRecord.longName;
transactionDate.text=tempTransferRecord.transactionDate;
toTeam.text=tempTransferRecord.toTeam;
fromTeam.text=tempTransferRecord.fromTeam;
/*
static NSString *MyIdentifier = @"MyIdentifier2";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier] ;
if (cell == nil)
{
[[NSBundle mainBundle] loadNibNamed:@"PlayerTransfers" owner:self options:nil];
cell=transfersInfoCell;
self.transfersInfoCell=nil;
}
*/
static NSString *CellIdentifier = @"MyIdentifier2";
static NSString *CellNib = @"PlayerTransfers";
UITableViewCell *cell = (UITableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:CellNib owner:self options:nil];
cell = (UITableViewCell *)[nib objectAtIndex:0];
}
// perform additional custom work...
return cell;
}
答案 0 :(得分:1)
尝试将您的单元格加载代码移至cellForRowAtIndexPath
的顶部,然后移动rowNo
和值设置。更改内容的单元格必须意味着您要么在第一次设置和滚动之间更改数据源中的内容,要么在错误的时间点设置值(即在第5行设置值,然后加载第6行)从一个笔尖,或设置一行上的值,然后再为它加载笔尖,以便覆盖你设置的值)。另外,我有点担心你设置局部变量而不是(PlayerTransfers*)cell.seasonYear.text = tempTransferRecord.seasonYear
或(UILabel *)[cell viewWithTag:1].text = tempTransferRecord.seasonYear
。您不应该在每个单元格中设置值而不是在表视图类中设置值吗?这可以解释为什么值会变为不同的值:您可以使用相同的变量来设置每个单元格。
答案 1 :(得分:0)
您是否在Interface Builder中设置了CellIdentifier