2017-08-01 2 views
0

Nur zu versuchen zu verstehen, wie und wenn es möglich ist, benutzerdefinierte UItableview mit 3 Abschnitte von benutzerdefinierten Zellen, ähnlich wie unten zu machen.iOS Benutzerdefinierte UItableviewcell Abschnitte

  Sensor Info 
====================== 
Sensor 1: $Value_1 
Sensor 2: $Value_2 
Sensor 3: $Value_3 
Sensor 4: $Value_4 
Sensor 5: $Value_5 
Sensor 6: $Value_6 

      Errors 
=================== 
Error 1 : $error1 
Error 2..: $error2.. 

     Another Section 
======================== 
Error 1 : $error1 
Error 2..: $error2.. 

Ein Vorschlag könnte sein, den gesamten Inhalt in einem Array hinzuzufügen und dann die Tabelle zu füllen, aber ich brauche jedes Segment nach dem anderen geladen werden. Jeder Segmentinhalt wird aus Methoden innerhalb der View-Controller-Klasse generiert, nachdem eine Schaltfläche gedrückt wurde. Also Sensorinfo, Fehler, ein anderer Abschnitt und mehr, wenn ich später noch etwas hinzufügen möchte.

Ich habe eine harte Zeit zu versuchen, zu begreifen, wie man einen Tisch mit verschiedenen Reihen syles für jeden Abschnitt baut. Ich möchte alle Sensordaten benutzerdefiniert Zelle und die Untertitel-Zellen oder richtige Details machen.

+0

Wenn Sie mit Bibliothek in Ordnung sind, als bitte STCollapseTableView versuchen ... –

Antwort

1

Sie können so viele Quellen und Abschnitte haben, wie Sie möchten.

Sie können sogar eine Prototypzelle für jede Sektion haben.

einfach überprüfen, wo Sie sind und damit umgehen mag:

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

func numberOfSections(in tableView: UITableView) -> Int { 
    return 2 
} 

func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? { 
    if (section == 0) { 
     return "Title 1" 
    } 
    if (section == 1) { 
     return "Title 2" 
    }   
} 

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    if section == 0 { 
     return contactPhones.count 
    } else if section == 1 { 
     return contactEmails.count 
    } else { 
     return 1 
    } 
} 

public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let cellIdentifier: String = "Cell" 
    var cell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier) as UITableViewCell! 
    if cell == nil { 
     cell = UITableViewCell(style: UITableViewCellStyle.subtitle, reuseIdentifier: cellIdentifier) 
    } 

    if indexPath.section == 0 { 
     cell?.textLabel?.text = contactPhones[indexPath.row]["phoneNumber"].stringValue 
     cell?.imageView?.image = UIImage(flagImageWithCountryCode: contactPhones[indexPath.row]["phoneCountryCode"].stringValue) 
    } else if indexPath.section == 1 { 
     cell?.textLabel?.text = contactEmails[indexPath.row]["emailAddress"].stringValue 
    } 

    return cell! 
} 
+0

Haben Sie das Ziel-c Version dieses Codes haben. Ich muss noch schnell lernen. – 3rdeye7

+0

Nein, aber die Methoden der Delegierten aus der Tabellenansicht sind gleich, Sie müssen nur das 'if' darin behandeln, um Ihr Ziel zu erreichen – GIJOW

+0

Gemessen am Code fügen Sie dem Viewcontroller im Storyboard drei verschiedene Tabellenansichten hinzu? – 3rdeye7

Verwandte Themen