2016-12-23 91 views
0

嗨,我試圖在UITableViewCell內添加UITableview。我已經連接外的tableview小區向視圖控制器和內部的tableview(在細胞內)到自定義細胞類並執行以下操作的代碼加載tableview裏面的uitableviewcell swift

//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中的自定義單元格類致命錯誤:

unexpectedly found nil while unwrapping a optional value occurs.

我測試過出口連接,並將其連接到自定義單元格類。請指點

+0

嘗試打印'tbl_Items'之前調用重載 – Tj3n

+0

檢查出口'tbl_Items'正確連接。 –

+0

@ Tj3n PO tel_Items給出了這樣的 (LLDB)PO tbl_Items 致命錯誤:意外地發現零而展開的可選值 致命錯誤:意外地發現零而展開的可選值 表達產生錯誤:執行被中斷,原因:EXC_BAD_INSTRUCTION(代碼= EXC_I386_INVOP,子代碼= 0x0)。 該過程已經返回到表達式評估之前的狀態。 – Mohanraj

回答

1

而不是使用OrderHistoryTableViewCell()您需要使用您已經使用dequeueReusableCellWithIdentifier創建重用細胞創建新實例,所以刪除線let vc = OrderHistoryTableViewCell(),並呼籲tableview_reload方法上cell

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

這是正確的......我甚至不明白爲什麼他已經離隊,但仍然創造了細胞的新實例....無語 – Tj3n

+0

非常感謝帥哥..它是我的錯...... – Mohanraj

+0

@Mohanraj歡迎隊友:) –