2017-01-09 23 views
0

Ich lade Nachrichten vom Server in die TableView. Jetzt möchte ich eine benutzerdefinierte Zelle mit Überschrift, Bild und Ausschnitt machen. Ich machte eine benutzerdefinierte Klasse für die Zelle und ich gab die Zelle benutzerdefinierte Kennung. Ich habe zwei Etiketten (eins für Schlagzeile und eins für Auszug). Jetzt möchte ich nur Überschrift im ersten Etikett und Auszug im zweiten Etikett anzeigen.Wie füllt man die benutzerdefinierte tableView-Zelle in Swift 3?

 @IBOutlet weak var headline: UILabel! 

     @IBOutlet weak var excerpt: UILabel! 

//Custom struct for the data 
struct News { 
    let title : String 
    let text : String 
    let link : String 
    let imgUrl : String 

    init(dictionary: [String:String]) { 
     self.title = dictionary["title"] ?? "" 
     self.text = dictionary["text"] ?? "" 
     self.link = dictionary["link"] ?? "" 
     self.imgUrl = dictionary["imgUrl"] ?? "" 
    } 
} 

//Array which holds the news 
var newsData = [News]() 

// Download the news 
func downloadData() { 
    Alamofire.request("https://api.sis.kemoke.net/news").responseJSON { response in 
     print(response.request) // original URL request 
     print(response.response) // HTTP URL response 
     print(response.data)  // server data 
     print(response.result) // result of response serialization 

     //Optional binding to handle exceptions 
     self.newsData.removeAll() // clean the data source array 
     if let json = response.result.value as? [[String:String]] { 
      for news in json { 
       self.newsData.append(News(dictionary: news)) 
      } 
      self.tableView.reloadData() 
     } 
    } 
} 

Und in dem folgende Verfahren zeige ich die Daten in der Zelle

override func tableView(_ tableView: UITableView, cellForRowAt  indexPath: IndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) 
    let news = newsData[indexPath.row] 
    cell.textLabel?.text = news.title 
    cell.detailTextLabel?.text = news.text 
    return cell 
} 
+1

Wie lautet der Name Ihrer benutzerdefinierten Klasse? Du solltest die Zelle als dein benutzerdefiniertes Spielzeug verwenden und du wirst in der Lage sein zu tun, was du willst! –

+1

Zum Beispiel habe ich eine Tabellenansicht Zelle benutzerdefinierte Klasse Called NewsCell Also mache ich: cell = tableView.dequeueReusableCell (withIdentifier: "NewsCell") als? NewsCell –

+0

Könnten Sie bitte weitere Informationen geben? Sollte ich diese Labels in meiner benutzerdefinierten Klasse "newsCellTableViewCell" hinzufügen? –

Antwort

0

eine Unterklasse von UITableViewCell F. E. erstellen NewsCell.

verbinden Sie Ihre Filialen

@IBOutlet weak var headline: UILabel! 
@IBOutlet weak var excerpt: UILabel! 

zu NewsCell. In Ihrem override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

Funktion werfen die Zelle wie folgt aus:

let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as? NewsCell 

und stellen Sie Ihre Eigenschaften.

Stellen Sie sicher, dass Sie die Klasse der Storyboard-Prototypenzelle als NewsCell festlegen.

Verwandte Themen