2017-10-05 3 views
0

Ich verwende UITableView, um meine Daten aus Realm anzuzeigen. Ich habe zwei Arten von Zeile eins mit UIImageView und andere ohne UIImageView. Wenn Bild in UIImageView die Höhe der Reihe ist, sollte 207 sein oder UIImageView ist gleich Null die Höhe der Reihe sein sollte 64.So verwenden Sie die dynamische Höhe für Tableviewcell

Meine Codierung:

func numberOfSections(in tableView: UITableView) -> Int { 
    return 1 
} 
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return msgs.count 
} 
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! collCell 
    let msg = msgs[indexPath.row] 
    var decodeImgURL = "" 
    cell.lbl1.text = msg.content 

    decodeImgURL = msg.imgurl 

    if decodeImgURL == "none" { 
     cell.img.isHidden = true 
    } else { 

     let dataDecoded : Data = Data(base64Encoded:decodeImgURL,options: .ignoreUnknownCharacters)! 
     let decodedImage = UIImage(data: dataDecoded) 
     cell.img.image = decodedImage 

    } 
    return cell 
} 
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 
    let cell = tableView.cellForRow(at: indexPath) as! collCell 
    if cell.img.image != nil { 
     return 207 
    } else { 
     return 64 
    } 

} 

Ich erhalte einen Fehler bei let cell = tableView.cellForRow(at: indexPath) as! collCell

+0

@Moritz ok ich verstand –

Antwort

1

verwenden Sie die gleichen Daten in heightForRowAt, wie Sie in cellForRowAt verwenden:

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

    let msg = msgs[indexPath.row] 

    if msg.imgurl == "none" { 
     print("row \(indexPath.row) does NOT have an image") 
     return 64 
    } else { 
     print("row \(indexPath.row) DOES have an image") 
     return 207 
    } 

} 

Alternativel y, könnten Sie Auto-Layout und Einschränkungen verwenden, um die Höhe der Zeilen automatisch zu bestimmen ... aber das ist ein anderes Thema.

+0

Ich aktualisierte meine Antwort ... sehen Sie, wenn Sie gültige Druckanweisungen für die Zeilen erhalten, die Bilder haben und nicht haben. – DonMag

+0

Vielen Dank, es hat funktioniert –

Verwandte Themen