使用数组中的数据实现静态表视图单元格

时间:2018-02-07 12:46:26

标签: ios swift uitableview

我有一些数据从数据库中提取并存储在我的UITableViewController中的数组中。但是,当我尝试将数据放入每个单元格中时,我得到一个错误,即我的索引超出了数组的范围。

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

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

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let item: ItemPreBasketModel = cellItems[indexPath.row] as! ItemPreBasketModel
    if indexPath.row == 0 {
        //Desc cell
        let cellIdentifier: String = "descCell"
        let descCell: UITableViewCell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier)!
        return descCell
    } else if indexPath.row == 1 {
        //Price cell
        let cellIdentifier: String = "priceCell"
        let priceCell: UITableViewCell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier)!
        return priceCell
    } else if indexPath.row == 2 {
        //Quantity cell
        let cellIdentifier: String = "quantityCell"
        let quantityCell: UITableViewCell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier)!
        return quantityCell
    } else {
        //Submit cell
        let cellIdentifier: String = "submitCell"
        let submitCell: UITableViewCell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier)!
        return submitCell
    }
}

以下是cellItems变量以及填充的位置:

var cellItems: NSArray = NSArray() {
    didSet {
        tableView.reloadData()
    }
}

    func itemsDownloaded(items: NSArray) {
    cellItems = items
    tableView.reloadData()
}

这是故事板中的静态表视图:

setup of the table view

我想做的事情,我已经从代码中删除了,因为它在到达此部分之前仍然失败,就是使用'项目'变量我在cellForRowAt内声明并使用对象的一部分填充每个单元格出口

即:descCell.descLabel.text = item.name

我得到的错误是:

  

线程1:致命错误:在解包可选值时意外发现nil

就行了

let descCell: UITableViewCell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier)!

1 个答案:

答案 0 :(得分:1)

您不应同时使用包含静态单元格和cellForRowAt的表格视图控制器。您应该使用动态原型动态填充数组。

要更改表格视图的内容类型,请在界面浏览器中选择它,打开属性检查器(右侧边栏左侧的第四个图标),然后选择 Dyanmic Prototypes < / strong> 表格部分下的内容

Dynamic Protoypes setting in Attributes inspector