2017-05-27 70 views
0

Noob here。iOS應用程序崩潰與滑塊大量的表格單元格

我編程在IOS創建UISliders的數(globalCount)與夫特3. grandTotal浮點值被這些滑塊值,並在一個被改變它們都調整總結於grandTotal 100%之間劃分。沒有滑塊低於最小值0或高於最大值100.

對於小於7的滑塊數量,所有工作都很好。只要添加7個或更多。嘗試使用基礎結構值更新單元格的滑塊值時,發生崩潰。

我已將單元更新功能移至其自己的功能以嘗試找出問題。我仍然崩潰。碰撞是

EXC_BAD_INSTRUCTION(代碼= EXC_1386_INVOP,子碼=爲0x0)

並在let loopCell行出現。

有沒有人有什麼建議,這是什麼?爲什麼它適用於低數字而不是更高數量的單元格?這是一個條件的事情?

這是小區更新功能

func updateCells() { 
    for i in 0...globalCount - 1 { 
     let loopCell: MyTableCell = ((myTableView.cellForRow(at: IndexPath(row:i, section: 0))) as? MyTableCell)! 
     loopCell.valueLabel.text = String(structData[i].value) 
     loopCell.cellSlider.value = structData[i].value 
    } 
} 

我的UI:

https://i.stack.imgur.com/93bXD.jpg

回答

2

cellForRow(at:)回報nil如果表視圖單元格是不可見的(目前屏幕外)。你正在崩潰,因爲你正在展開nil。相反,使用可選的綁定(if let)安全地解開值:

func updateCells() { 
    for i in 0..<globalCount { 
     if let loopCell = myTableView.cellForRow(at: IndexPath(row: i, section: 0)) as? MyTableCell { 
      loopCell.valueLabel.text = String(structData[i].value) 
      loopCell.cellSlider.value = structData[i].value 
     } 
    } 
} 
+0

你爲什麼說它不在屏幕上?或者是第二列在屏幕外? – Honey

+0

受過教育的猜測。 OP說「增加7個或更多」。我認爲他正在用盡屏幕上的房地產,迫使一個小組離開屏幕。 – vacawama

+0

太棒了!謝謝。會放棄這一點 – Sean

0

這是由於使用武力展開它崩潰。

最方便的方法是使用如果讓語句來檢查數據是否有或沒有,因爲如果讓它(展開)。