我有一个UITableView,它从应用程序的沙箱中获取数据,这是通过FileManager的“ .import”功能实现的。基本上,我有一个“添加”按钮,使“ UIDocumentPickerViewController”弹出,并且我能够导入文件,UITableView会显示它们。
我的问题是,当我导入文件时,该文件未显示在TableView中,我必须退出该应用程序并将其重新打开以显示该文件。
我尝试使用“ self.tableView.reloaddata()”和“ tableView.reloaddata()”进行各种操作,但没有任何效果,甚至没有出现在控制台中。我也尝试提供一个“刷新”按钮,但是它也不起作用...
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
let dirPaths = FM.urls(for: .documentDirectory, in: .userDomainMask)
let docsDir = dirPaths[0].path
let importedfiles = try! FM.contentsOfDirectory(atPath: docsDir)
self.importedfiles! = importedfiles as NSArray
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return importedfiles.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(
withIdentifier: "cell",
for: indexPath) as! TableViewCell
cell.titleLabel.text = importedfiles[indexPath.row] as? String
return
更可取的是,当我导入文件时,TableView会自动刷新。 (按钮只是测试)
答案 0 :(得分:0)
您需要在选择新文档后重新加载数据。
class YourViewController: UIViewController {
...
override func viewDidLoad() {
super.viewDidLoad()
self.loadFiles();
}
func loadFiles() {
let dirPaths = FM.urls(for: .documentDirectory, in: .userDomainMask)
let docsDir = dirPaths[0].path
let importedfiles = try! FM.contentsOfDirectory(atPath: docsDir)
self.importedfiles! = importedfiles as NSArray
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return importedfiles.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(
withIdentifier: "cell",
for: indexPath) as! TableViewCell
cell.titleLabel.text = importedfiles[indexPath.row] as? String
return cell;
}
....
}
extension YourViewController: UIDocumentPickerDelegate {
func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentsAt urls: [URL]) {
self.loadFiles();
self.tableView.reloadData();
}
}