仅在文件存在时显示cell.button

时间:2016-05-15 13:03:01

标签: ios objective-c uitableview nsfilemanager

我有一个表格视图,其中一些单元格由2个标签填充 如果存在名为“label1-label2-name”的mp3文件,则播放该文件。

 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-label-2-AAA-a”的文件,如果文件“label1-label-2-AAA-d”没有,则会隐藏播放按钮

如何在特定单元格中显示/隐藏游戏?

1 个答案:

答案 0 :(得分:1)

如果您正在重复使用单元格,那么您所共享的代码段并不清楚,但假设您是,您可能希望在两种情况下更新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-label-2-AAA- a “label1 -label-2-AAA- b ,...),如果至少有一个,我们会显示该按钮,否则我们将其隐藏