2016-11-02 6 views
0

У меня есть UITableViewController. В коде tableview я хочу отобразить «lineLabel» (который является просто пустой меткой с фоном в нижней части ячейки), если значение равно другому значению - и я получил эту работу очень красиво!Индекс вне диапазона в ячейке UITableViewController - swift

Проблема в том, что когда я добираюсь до нижней ячейки, я получаю индекс за пределами диапазона. Я знаю, почему я получаю сообщение об ошибке (покажет вам код), но я не знаю, как предотвратить эту ошибку и получить тот же результат, что и сейчас?

Надеюсь, вы можете мне помочь!

Вот мой код:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
     let cell:carTableViewCell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! carTableViewCell 

let checkBackgroundColor = carsArray[indexPath.row + 1].componentsSeparatedByString("#") 

     if checkBackgroundColor[4] == finalCars[4] { 
      cell.lineLabel.hidden = true 
     } else { 
      cell.lineLabel.hidden = false 
     } 


     return cell 
    } 

я получаю индекс из ошибки диапазона, потому что я проверяю для индекса, который не существует, в workoutsArray[indexPath.row + 1].componentsSeparatedByString("#") части моего кода. Я просто не знаю, как это сделать в противном случае? Кто угодно??

+0

Что вы возвращаетесь под 'numberOfRowsInSection' и' NumberOfSections '? – EridB

+0

Я вернулся 1, но никогда не думал - livenplay показал мне, как сделать это правильно :-) –

ответ

2

Проверить подсчитывать массив перед:

if carsArray.count > indexPath.row + 1 { 
    // your code here 
} 

, но и вы должны сделать правильные расчеты ваших Tableview строк подсчета и поместить его в ваш override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int

+0

Точно, что я отсутствовал - спасибо! –

Смежные вопросы