使用UITableView

时间:2016-02-28 01:27:24

标签: ios swift uitableview

我有TableViewController UITableView,视图控制器类有一个名为isFolder的变量。

在整个ViewController中,我使用switch语句来确定我应该使用selectedFolder1selectedObjects的变量。每个变量都是一个NSManagedObject子类,并且有一个返回数组的arrayOfItems方法。

准备segue时isFolder的值取决于传递的数据。

这一切都很好。问题是数据传递时我使用switch语句来填充表。当true的switch语句大小为isFolder时,它不会被cellForRowAtIndexPath表函数调用,而是numberOfRowsInSection。但是,当我在解除模态视图后重新加载视图时,数据会出现。

例如

此函数工作正常,并调用switch语句case为true。

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    switch isFolder {
    case true: print("no. of cells for folder"); return self.selectedFolder.arrayOfItems.count
    case false: print("no. of cells for object"); return self.selectedObject.arrayOfItems.count
    }
}

但是,不调用以下函数来填充tableview单元格的switch语句为true。

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! TableViewCell
    let color = colorWheel()
    cell.selectionStyle = .None

    // Configure the cell...

    cell.backgroundColor = color.white

    switch isFolder {
    case true:
        print("Using selected Folder")
        cell.textLabel?.text = selectedFolder.arrayOfItems[indexPath.row].title

    case false:
        print("Using selected Object")
        cell.textLabel?.text = selectedObject.arrayOfItems[indexPath.row].title

    }
    return cell
}

当案例为false时,一切正常,数据首次显示。如上所述,如果switch语句为true,则表格显示数据,但仅当我解除模态视图并发布通知以调用self.table.reloadData()时。我确实在reloadData中调用了表方法viewDidLoad,但这没有做任何事情。

有人有什么建议吗?

1 个答案:

答案 0 :(得分:2)

确保在UITableView对象上调用reloadData()之前填充数据对象。否则,如果numberOfRowsInSections返回0,则不会调用cellForRowAtIndexPath