2016-12-14 3 views
0

wie üblich Ich versuche, einigen benutzerdefinierten Höhenwert bis zu einem gewissen Zelle mit diesem Code hinzuzufügen:Mit Ausgabe mit 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 

} 

aber app stürzt mit diesem Fehler: fatal error: unexpectedly found nil while unwrapping an Optional value

Ich habe getan, das vorher ohne Problem, aber diesmal stürzt App! Warum ?

+1

Wenn 'indexPath.row' nicht 5 oder 6 ist, dann setzen Sie niemals' height' auf irgendwas, also ist es immer noch 'nil'. – dan

+0

@dan Ich bin mir sicher, Reihe 5 und 6 sind verfügbar, ich versuchte mit 0, 1 und stürzt immer noch –

Antwort

1

Sie haben den Höhenwert

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 Danke! Ich habe vergessen, einen Standardwert hinzuzufügen –

+1

Auch ist es eine beste Programmierpraxis, Variablen nur als 'var' zu deklarieren, wenn Sie wirklich beabsichtigen, sie zu mutieren. Definieren Sie die Höhe also als "let height: CGFloat" und im "default" -Fall Ihrer switch-Anweisung als "height = 100". Dann wird "Höhe" nur einmal festgelegt und kann nicht geändert werden, bevor Sie es zurückgeben. – par

0

Sie definieren height nicht für Zeilen, die nicht 5 oder 6 sind. Definieren Sie einfach height wie folgt.

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

In Fällen, außer 5 und 6 Sie stellen keinen Wert in height Eigenschaft. Set Standardwert:

var height:CGFloat! = 100 

oder aktualisieren default Fall:

default: 
    height = 100 
    break 
0

Stellen Sie den Standardwert von height auf einen bestimmten Wert zu instanziieren. Dein Code gibt momentan keinen Wert zurück.

Verwandte Themen