在uitableviewcell swift

时间:2016-12-23 07:12:02

标签: ios iphone swift uitableview tableviewcell

您好我正在尝试在UITableview内添加UITableViewCell。我已将外部tableview单元格连接到视图控制器,将内部tableview(单元格内部)连接到自定义单元格类,并执行以下代码

//cellforrow of the outer tableview:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{
    let cell = tableView.dequeueReusableCellWithIdentifier("HistoryCell")! as! OrderHistoryTableViewCell
    print(ordersArray[indexPath.row].valueForKey("items"))
    cell.lbl_orderStatus.text = ordersArray[indexPath.row].valueForKey("status") as? String
    cell.lbl_time.text = ordersArray[indexPath.row].valueForKey("timestamp") as? String
    let vc = OrderHistoryTableViewCell() // Custom cell class
    vc.tableview_reload(ordersArray[indexPath.row]as! NSMutableDictionary) //pass value to the tableview inside the cell
    return cell
}

//code in the custom cell class

func tableview_reload(dict : NSMutableDictionary){
    orderItemsarray.removeAllObjects()
    let itemsDict = dict.valueForKey("items") as! NSMutableDictionary
    for (_,value) in itemsDict
    {
        let tempDict = value as! NSMutableDictionary
        orderItemsarray.addObject(tempDict)
    }
    self.tbl_Items.reloadData() // fatal error: unexpectedly found nil while unwrapping an optional value
}

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
    return self.orderItemsarray.count;
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{
    var cell : UITableViewCell!
    cell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "cell");
    cell.textLabel?.text = "test"
    return cell
}

传递数据并调用自定义单元类中的func tableview_reload。但是当我尝试在自定义单元类致命错误中重新加载tableview时:

  

在展开可选值时意外发现nil。

我检查了插座连接,并连接到自定义单元类。请建议

1 个答案:

答案 0 :(得分:1)

您需要使用OrderHistoryTableViewCell()创建的重复使用的单元格,而不是使用dequeueReusableCellWithIdentifier创建新实例,因此请删除行let vc = OrderHistoryTableViewCell()并在{{tableview_reload上调用cell方法1}}。

cell.tableview_reload(ordersArray[indexPath.row]as! NSMutableDictionary)
return cell