不调用表格单元格

时间:2018-05-23 12:45:03

标签: swift uitableview

我创建了一个包含UITableView的UIViewController。 我希望它显示我在其他位置创建的文件。

相应的类看起来像这样:

import UIKit

class BackupViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {

var rows:[String] = []


override func viewDidLoad() {
    super.viewDidLoad()
    self.table.register(UITableViewCell.self, forCellReuseIdentifier: "cell")
    self.table.dataSource = self
    self.table.delegate = self
    getFiles()
    // Do any additional setup after loading the view.
}

func getFiles() {
    let filemgr = FileManager.default
    let path = filemgr.urls(for: FileManager.SearchPathDirectory.documentDirectory, in: FileManager.SearchPathDomainMask.userDomainMask).last
    do {
        rows = try filemgr.contentsOfDirectory(atPath: (path?.path)!)
        // process files
    } catch {
        print("Error while enumerating files")
    }
    table.reloadData()
}




func numberOfSections(in tableView: UITableView) -> Int {
    return 1
}

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



func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell:UITableViewCell = self.table.dequeueReusableCell(withIdentifier: "cell") as! UITableViewCell
    cell.textLabel?.text = rows[indexPath.row]
    return cell
}

@IBOutlet weak var table: UITableView!

}

正确读取文件

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int)
调用

(由于某种原因发生了3次),该数组(目前)有2个元素。但是,功能

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath)

从未被调用,当然我得到一张空桌。

1 个答案:

答案 0 :(得分:0)

您需要在getFile()函数中获取文件后重新加载tableView。

func getFiles() {
        let filemgr = FileManager.default
        let path = filemgr.urls(for: FileManager.SearchPathDirectory.documentDirectory, in: FileManager.SearchPathDomainMask.userDomainMask).last
        do {
            rows = try filemgr.contentsOfDirectory(atPath: (path?.path)!)
             self.table.reloadData()
// process files
        } catch {
            print("Error while enumerating files")
        }
        /*for file in files {
            rows.append(file.absoluteString)
        }*/
        showFiles = true
    }

一旦行中有一些值,你需要调用reloadData()。