Как перезагрузить UITableView после импорта данных? - PullRequest
0 голосов
/ 29 мая 2019

У меня есть 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 обновлялся самостоятельно. (Кнопка была просто тестом)

1 Ответ

0 голосов
/ 29 мая 2019

вам нужно перезагрузить данные после того, как были выбраны новые документы.

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();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...