如何在TableView单元格中显示文件名

时间:2018-02-04 05:56:39

标签: ios swift uitableview

录制的文件未显示在TableView上 我该如何展示呢? 我希望TableView Cell可以显示录音-yyyy-MM-dd-HH-mm-ss.m4a 录制功能正常,但文件名无法在TableView单元格中显示 我希望在指定的单元格中也可以播放我想听录音

var recordings = [URL]()

func listRecordings() {

    let documentsDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]
    do {
        let urls = try FileManager.default.contentsOfDirectory(at: documentsDirectory,
                                                               includingPropertiesForKeys: nil,
                                                               options: FileManager.DirectoryEnumerationOptions.skipsHiddenFiles)
        self.recordings = urls.filter({ (name: URL) -> Bool in
            return name.pathExtension == "m4a"
        })
    } catch {
        print(error.localizedDescription)
        print("something went wrong listing recordings")
    }

}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return recordings.count
}


func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
    cell.textLabel?.text = recordings[indexPath.row].lastPathComponent
    return cell
}

以下是我的存档方式

func setupRecorder() {

    let format = DateFormatter()
    format.dateFormat="yyyy-MM-dd-HH-mm-ss"
    let currentFileName = "recording-\(format.string(from: Date())).m4a"
    print(currentFileName)

    let documentsDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]
    self.soundFileURL = documentsDirectory.appendingPathComponent(currentFileName)
    print("writing to soundfile url: '\(soundFileURL!)'")

    if FileManager.default.fileExists(atPath: soundFileURL.absoluteString) {
        // probably won't happen. want to do something about it?
        print("soundfile \(soundFileURL.absoluteString) exists")
    }

1 个答案:

答案 0 :(得分:0)

您必须reload tableview

将所有URL值存储在recordings后,您必须致电tableview.reload()

你是初学者,

首先,尝试检查,tableView的委托和数据源方法是否正在调用。

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return 5
}


func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
    cell.textLabel?.text = String(indexPath.row)
    return cell
}

如果上述方法无效,请尝试添加以下行。

override func viewDidLoad() {
      super.viewDidLoad()

      yourTableView.dataSource = self
      yourTableView.delegate = self

}

如果一切正常,如果您的URL array中有一些网址,则reload()是唯一的问题。