仅当文件存在时才显示cell.button
问题描述:
我有一个表格视图,其中一些单元格由2个标签填充。
如果存在名为“label1-label2-name”的mp3文件,则播放该文件。仅当文件存在时才显示cell.button
NSArray *final;
NSString *element;
final = [NSArray arrayWithObjects: @"a", @"b", @"c", @"d", nil];
现在在我的cellForRowAtIndexPath
我试图做同样的,但如果该文件存在只是为了显示播放按钮(按钮最初是隐藏的)。
- (CustomCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
for (element in final) {
buttonA = [NSString stringWithFormat:@"%@-%@-AAA-%@", current[indexPath.row][0],current[indexPath.row][1], element];
fileA = [[NSBundle mainBundle] pathForResource:buttonA ofType:@"mp3"];
BOOL fileExistsA = [[NSFileManager defaultManager] fileExistsAtPath:fileA];
if (fileExistsA) {
cell.playA.hidden = false;
}
}
}
这里发生的事情是,即使一个文件名为 “LABEL1标签-2-AAA-A” 的存在,如果文件 “LABEL1标签-2-AAA-d” 不,播放按钮将被隐藏。
如何显示/隐藏特定单元格的播放?
答
它不是从片断你分享的,如果你正在重用的细胞或没有,但假设你是代码清晰,你可能希望在这两种情况下,更新cell.playA.hidden
状态(例如,如果文件存在与否) ,否则当屏幕上出现一个存在mp3文件的单元格时,您将不会看到“播放”按钮,并且在配置它时,您会使用先前隐藏的按钮将单元格出列。
- (CustomCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
/// Get the cell
cell.playA.hidden = true;
for (element in final) {
buttonA = [NSString stringWithFormat:@"%@-%@-AAA-%@", current[indexPath.row][0],current[indexPath.row][1], element];
fileA = [[NSBundle mainBundle] pathForResource:buttonA ofType:@"mp3"];
BOOL fileExistsA = [[NSFileManager defaultManager] fileExistsAtPath:fileA];
if (fileExistsA) {
cell.playA.hidden = false;
break;
}
}
}
假设这是你想要的,我们检查所有可能的文件名,该单元(“label1的标签-2-AAA-一个”,“LABEL1标签-2-AAA-b“,...),如果至少有一个存在,我们显示按钮,否则我们将其隐藏。
是这样的? button.A = [NSString stringWithFormat:@“%@ - %@ - AAA - %@”,current [indexPath.row] [ 0],当前[indexPath.row] [1],元素]; fileA = [[NSBundle mainBundle] pathForResource:buttonA ofType:@“mp3”]; BOOL fileExistsA = [[NSFileManager defaultManager] fileExistsAtPath:fileA]; }' – fabersky
对不起,我误解了你的问题 - 我没有意识到你循环'cellForRowAtIndexPath'中的'final'。我已经更新了我的答案。 –
那个伎俩!谢谢! – fabersky