iphone - 重复使用表格单元格问题

标签 iphone objective-c ios uitableview

我相信我错误地实现了 cellForRowAtIndexPath。我有一个 UISlider,默认情况下它是隐藏的,当在表格单元格中按下按钮时会出现。当我按下第一个单元格中的按钮时, slider 不仅出现在第一个单元格中,而且在我向下滚动时出现在每三个单元格中。我目前通过在 cellForRowAtIndexPath 中将 slider 的隐藏属性重置为 YES 来避免这种情况。我还为我需要默认隐藏的单元格中的其他 View 执行此操作。当我向上滚动到第一个单元格时,这会产生一个新问题, slider 被隐藏,因为该属性在 cellForRowAtIndexPath 中被重置。这让我相信我做错了什么。

这是我的代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

static NSString *CellIdentifier = @"Cell";

SongsCustomCell *songCell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (songCell == nil) {
    songCell = [[SongsCustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    NSLog(@"new cell created");
}

NSDictionary *dictionary = [parseTrackArray objectAtIndex: indexPath.row];
NSString *trackTitle = [dictionary objectForKey:@"trackTitle"];
NSString *trackLink = [dictionary objectForKey:@"trackStreamLink"];
songCell.trackLinkString = trackLink;
songCell.trackTitleString = trackTitle;
[songCell.trackTitleLabel setFont:[UIFont fontWithName:@"Calibri" size:22]];
songCell.trackTitleLabel.text = [NSString stringWithFormat:@"%@", trackTitle];

songCell.playButton.hidden = NO;
songCell.playbackSlider.hidden = YES;
songCell.playerHasLoaded = NO;
songCell.moviePlayer.view.hidden = YES;

return songCell;
}

最佳答案

您需要将 slider 的隐藏/未隐藏状态存储在数据模型中的某个位置,然后从 cellForRowAtIndexPath 中适本地设置 slider 的可见性。如果一次只有一个 slider 可见,您可以将索引路径作为 ivar 存储在 View Controller 中,否则您将需要在字典中有另一个键来保存 NSNumber bool 或其他东西。

关于iphone - 重复使用表格单元格问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10841345/

相关文章:

ios - “GooglePlus/GooglePlus.h file not found” 尝试构建我的项目时

iphone - 在一个线程中保存核心数据,退出前如何保证其写入完成?

ios - `animateKeyframesWithDuration` - 高 GPU

iOS StatusBar 颜色变化动画

objective-c - AWSDynamoDBQueryExpression 按 UNIX 时间戳排序

javascript - 在 Objective C iPhone SDK 中创建对象

ios - 混合 Swift 和 Objective C : "ProjectName-Swift.h" file not found

iphone - AudioToolbox - 录音时的回调延迟

ios - 支付整合 payzee vs stripe

iphone - 像 C# 一样使用 SHA512 对密码字符串进行哈希处理