2016-07-08 5 views
1

Ich baue eine Youtube wie App, um mich zu Swift und Autolayout zu trainieren.iOS Wiederverwendung Tischzellen Design

Aber ich habe ein Problem, an mehreren Orten muss ich eine Tabelle von Videos anzeigen, dann, was ich tun möchte, ist ein Video-Zelle, die ich in anderen Tabellen wieder verwenden, aber ich sehe nicht wie geht das.

Ich habe versucht, eine ContainerView in eine Zelle zu setzen, habe ich diesen Fehler "Container Ansichten können nicht in Elemente platziert werden, die zur Laufzeit wiederholt werden."

PS: Ich dachte schon, dass ein ContainerView einen TableViewController von Videos referenziert, aber das Problem ist, dass Videos nicht die einzigen Zellen sind, die ich in meinen differents Tabellen haben möchte. (Manchmal gibt es Kommentare an der Unterseite, manchmal andere Dinge usw. Kurz gesagt: Die Tabellen werden verschiedene Arten von Zellen haben).

Antwort

1

Verwenden Sie eine separate XIB-Datei, um wiederverwendbare Tabellenzellen zu erstellen. So erstellen Sie CustomTableViewCell.swift und CustomTableViewCell.xib. Um Ihre benutzerdefinierte Zelle zu verwenden, müssen Sie sie unter UITableViewDataSource registrieren.

This stackoverflow answer may be of use.

import UIKit 
class TableViewController: UITableViewController { 
    let items = ["Item 1", "Item2", "Item3", "Item4"] 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     tableView.registerNib(UINib(nibName: "CustomOneCell", bundle: nil), forCellReuseIdentifier: "CustomCellOne") 
    } 

// MARK: - UITableViewDataSource 

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return items.count 
    } 
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
     let cell = tableView.dequeueReusableCellWithIdentifier("CustomCellOne", forIndexPath: indexPath) as! CustomOneCell 
     cell.middleLabel.text = items[indexPath.row] 
     cell.leftLabel.text = items[indexPath.row] 
     cell.rightLabel.text = items[indexPath.row] 
     return cell 
    } 
} 
+0

Vielen Dank! Ich arbeite;) – NathanVss