录制的文件未显示在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")
}
答案 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()
是唯一的问题。