我正在做以下代码。问题是,当我滚动时,一个单元格将进入不可见区域,当它再次进入可见区域时,单元格的子视图就像标签等一样消失。
代码:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"playcell";
CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
[[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil];
}
if (indexPath.section == 0) {
if (indexPath.row == 0) {
[cell.backgroundCellBtn setBackgroundImage:[UIImage imageNamed:@"header.png"] forState:UIControlStateNormal];
cell.backgroundCellBtn.userInteractionEnabled = NO;
cell.nameTextLbl.hidden = YES;
cell.playtimeLbl.hidden = YES;
cell.lineSperatorImageView.hidden = YES;
}else if (indexPath.row == self.yourTurnPlayList.count +1) {
[cell.backgroundCellBtn setBackgroundImage:[UIImage imageNamed:@"footer.png"] forState:UIControlStateNormal];
cell.backgroundCellBtn.userInteractionEnabled = NO;
cell.nameTextLbl.hidden = YES;
cell.playtimeLbl.hidden = YES;
cell.lineSperatorImageView.hidden = YES;
}
else {
int pathValue = indexPath.row -1 ;
if (pathValue > (-1) && pathValue < self.yourTurnPlayList.count) {
[cell.backgroundCellBtn setBackgroundImage:[UIImage imageNamed:@"sample.png"] forState:UIControlStateNormal];
[cell.backgroundCellBtn setBackgroundImage:[UIImage imageNamed:@"sample.png"] forState:UIControlStateHighlighted];
[cell.backgroundCellBtn setBackgroundImage:[UIImage imageNamed:@"sample.png"] forState:UIControlStateSelected];
GamePlay *gamePlay = [self.yourTurnPlayList objectAtIndex:pathValue];
cell.backgroundCellBtn.tag = pathValue;
cell.nameTextLbl.text = [self getCurrentPlayerFormattedName:gamePlay];
cell.playtimeLbl.text = [NSString stringWithFormat:@"played %@",[Helper getLastPlayedStringFromUnixTime:gamePlay.lastMoveTime]];
}
}
} else if (indexPath.section == 1) {
if (indexPath.row == 0) {
[cell.backgroundCellBtn setBackgroundImage:[UIImage imageNamed:@"header2"] forState:UIControlStateNormal];
cell.backgroundCellBtn.userInteractionEnabled = NO;
cell.nameTextLbl.hidden = YES;
cell.playtimeLbl.hidden = YES;
cell.lineSperatorImageView.hidden = YES;
}else if (indexPath.row == self.theirTurnPlayList.count +1) {
[cell.backgroundCellBtn setBackgroundImage:[UIImage imageNamed:@"footer2.png"] forState:UIControlStateNormal];
cell.backgroundCellBtn.userInteractionEnabled = NO;
cell.nameTextLbl.hidden = YES;
cell.playtimeLbl.hidden = YES;
cell.lineSperatorImageView.hidden = YES;
}
else {
int pathValue = indexPath.row -1 ;
if (pathValue > (-1) && pathValue < self.theirTurnPlayList.count) {
[cell.backgroundCellBtn setBackgroundImage:[UIImage imageNamed:@"sample.png"] forState:UIControlStateNormal];
[cell.backgroundCellBtn setBackgroundImage:[UIImage imageNamed:@"sample.png"] forState:UIControlStateHighlighted];
[cell.backgroundCellBtn setBackgroundImage:[UIImage imageNamed:@"sample.png"] forState:UIControlStateSelected];
cell.backgroundCellBtn.userInteractionEnabled = NO;
GamePlay *gamePlay = [self.theirTurnPlayList objectAtIndex:pathValue];
cell.nameTextLbl.text = [self getCurrentPlayerFormattedName:gamePlay];
cell.playtimeLbl.text = [NSString stringWithFormat:@"%@",[Helper getLastPlayedStringFromUnixTime:gamePlay.lastMoveTime]];
}
}
}
return cell;
}
答案 0 :(得分:1)
因为您隐藏了单元格。当它们重用时,它们是隐藏的,所以你应该设置隐藏的是NO,重用时
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"playcell";
CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
[[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil];
}
if (indexPath.section == 0) {
if (indexPath.row == 0) {
[cell.backgroundCellBtn setBackgroundImage:[UIImage imageNamed:@"header.png"] forState:UIControlStateNormal];
cell.backgroundCellBtn.userInteractionEnabled = NO;
cell.nameTextLbl.hidden = YES;
cell.playtimeLbl.hidden = YES;
cell.lineSperatorImageView.hidden = YES;
}else if (indexPath.row == self.yourTurnPlayList.count +1) {
[cell.backgroundCellBtn setBackgroundImage:[UIImage imageNamed:@"footer.png"] forState:UIControlStateNormal];
cell.backgroundCellBtn.userInteractionEnabled = NO;
cell.nameTextLbl.hidden = YES;
cell.playtimeLbl.hidden = YES;
cell.lineSperatorImageView.hidden = YES;
}
else {
int pathValue = indexPath.row -1 ;
if (pathValue > (-1) && pathValue < self.yourTurnPlayList.count) {
[cell.backgroundCellBtn setBackgroundImage:[UIImage imageNamed:@"sample.png"] forState:UIControlStateNormal];
[cell.backgroundCellBtn setBackgroundImage:[UIImage imageNamed:@"sample.png"] forState:UIControlStateHighlighted];
[cell.backgroundCellBtn setBackgroundImage:[UIImage imageNamed:@"sample.png"] forState:UIControlStateSelected];
GamePlay *gamePlay = [self.yourTurnPlayList objectAtIndex:pathValue];
cell.backgroundCellBtn.tag = pathValue;
cell.nameTextLbl.text = [self getCurrentPlayerFormattedName:gamePlay];
cell.playtimeLbl.text = [NSString stringWithFormat:@"Last played %@",[Helper getLastPlayedStringFromUnixTime:gamePlay.lastMoveTime]];
//add these
cell.nameTextLbl.hidden = NO;
cell.playtimeLbl.hidden = NO;
cell.lineSperatorImageView.hidden = NO;
}
}
} else if (indexPath.section == 1) {
if (indexPath.row == 0) {
[cell.backgroundCellBtn setBackgroundImage:[UIImage imageNamed:@"header2"] forState:UIControlStateNormal];
cell.backgroundCellBtn.userInteractionEnabled = NO;
cell.nameTextLbl.hidden = YES;
cell.playtimeLbl.hidden = YES;
cell.lineSperatorImageView.hidden = YES;
}else if (indexPath.row == self.theirTurnPlayList.count +1) {
[cell.backgroundCellBtn setBackgroundImage:[UIImage imageNamed:@"footer2.png"] forState:UIControlStateNormal];
cell.backgroundCellBtn.userInteractionEnabled = NO;
cell.nameTextLbl.hidden = YES;
cell.playtimeLbl.hidden = YES;
cell.lineSperatorImageView.hidden = YES;
}
else {
int pathValue = indexPath.row -1 ;
if (pathValue > (-1) && pathValue < self.theirTurnPlayList.count) {
[cell.backgroundCellBtn setBackgroundImage:[UIImage imageNamed:@"sample.png"] forState:UIControlStateNormal];
[cell.backgroundCellBtn setBackgroundImage:[UIImage imageNamed:@"sample.png"] forState:UIControlStateHighlighted];
[cell.backgroundCellBtn setBackgroundImage:[UIImage imageNamed:@"sample.png"] forState:UIControlStateSelected];
cell.backgroundCellBtn.userInteractionEnabled = NO;
GamePlay *gamePlay = [self.theirTurnPlayList objectAtIndex:pathValue];
cell.nameTextLbl.text = [self getCurrentPlayerFormattedName:gamePlay];
cell.playtimeLbl.text = [NSString stringWithFormat:@"%@",[Helper getLastPlayedStringFromUnixTime:gamePlay.lastMoveTime]];
//add these
cell.nameTextLbl.hidden = NO;
cell.playtimeLbl.hidden = NO;
cell.lineSperatorImageView.hidden = NO;
}
}
}
return cell;
}