2016-11-15 5 views
0

Ich kann mir nicht vorstellen, wie man eine tabellarische Ansicht hat, die ein Subjekt, einen Körper und ein Bild enthält, so dass, wenn es kein Bild gibt, das Subjekt und der Körper zusammen sind. siehe Bild auto lay with table prototypeswift tableview image und label

Ich mag das Thema und Körper zusammen, wenn ein Bild in der Datenbank und dann, wenn es ein Bild, dann Objektbild Körper

Antwort

1

Stift die Etiketten an die oberen und unteren Ende der Zelle . Wenn Sie kein Bild haben, setzen Sie imageView.isHidden = true. Sie geben auch die reguläre Zellenhöhe abzüglich der imageView.frame.size.height in UITableViewDelegate.tableview (_: heightForRowAt :) zurück.

Wenn Sie nicht möchten, nähern Sie sich einfach zwei verschiedene TableViewCells und deque die eine mit dem Bild, wenn Sie ein Bild haben und die ohne die Bildansicht, wenn Sie kein Bild haben.

0

Sie können dies in Ihren dataSource-Methoden für die Tabellenansicht tun. So etwas sollte funktionieren:

//Model: 
var model = [Stuff] 


override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 

    let cell = tableView.dequeueReusableCell(withIdentifier: "myprototype", for: indexPath) 

    cell.subjectLabel.text = model[indexPath.row].subject 
    cell.bodyLabel.text = model[indexPath.row].body 
    //assuming the image is an optional 
    if let image = model[indexPath.row].image { 
     cell.imageView.image = image 
    } 
    return cell 
} 

Sie könnten die automatische Layout Einschränkungen für den Imageview setzen müssen, um eine geringe Druckfestigkeit aufweisen.

Vielleicht möchten Sie auch die Zellen durch die Umsetzung der folgenden in den UITableViewDelegate Methoden die Größe machen:

override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 
    return UITableViewAutomaticDimension 
} 

override func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat { 
    return UITableViewAutomaticDimension 
}