2016-12-14 2 views
0

, как обычно, я пытаюсь добавить некоторые значения пользовательской высоты до некоторой ячейки с этим кодом:Имея проблемы с heightForRowAt indexPath

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 

    var height:CGFloat! 

    switch indexPath.row { 
    case 5: 
     height = 190 

    case 6: 
     height = 140 

    default: 
     break 
    } 

    return height 

} 

но приложение падает с этой ошибкой: fatal error: unexpectedly found nil while unwrapping an Optional value

Я сделал это раньше без проблем, но на этот раз приложение падает! Зачем ?

+1

Если 'indexPath.row' не 5 или 6, вы никогда не устанавливаете' height' ни в чем, так что это все равно 'nil'. – dan

+0

@dan Я уверен, что строки 5 и 6 доступны, я пробовал с 0, 1 и все еще сбой –

ответ

1

Вы должны инстанцирует значение высоты

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 

    var height:CGFloat = 100 

    switch indexPath.row { 
    case 5: 
     height = 190 

    case 6: 
     height = 140 

    default: 
     break 
    } 

    return height 

} 
+1

Aha Спасибо! Я забыл добавить значение по умолчанию –

+1

И это лучшая практика программирования, чтобы объявлять переменные как «var», если вы действительно собираетесь их мутировать. Поэтому определите высоту как 'let height: CGFloat' и в случае' default' вашего оператора switch установите 'height = 100'. Тогда 'height' устанавливается только один раз и не может быть изменен, прежде чем вы его вернете. – par

0

Вы не определяете height для строк, которые не являются 5 или 6. Просто определите height следующим образом.

var height: CGFloat = 100 //Or some other value you need 
0

В случаях, за исключением 5 и 6 не какое-либо значение в height собственности. Установленное значение по умолчанию:

var height:CGFloat! = 100 

или обновить default случай:

default: 
    height = 100 
    break 
0

Устанавливает значение по умолчанию height до некоторого значения. В настоящее время ваш код возвращает значение nil.

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