webentwicklung-frage-antwort-db.com.de

Zelle aus Xib mit Swift 3

Ich habe bereits einige Videos zu diesem Thema gelesen und gesehen, aber ich kann das nicht zum Laufen bringen. Ich versuche, eine Zelle aus einem xib anstelle des Storyboards.

Dies ist mein ViewController (wo ich die Tabellenansicht habe).

import UIKit

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {

    @IBOutlet var tableView: UITableView!


    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view, typically from a nib.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

        return 5
    }

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

        let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! CellTableView

        cell.test.text = "A";

        return cell;

    }

}

Dies ist mein CellTableView (die Klasse, in der ich mein Handy habe):

import UIKit

class CellTableView: UITableViewCell {

    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
    }

    @IBOutlet var teste: UILabel!

    override func setSelected(_ selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)

        // Configure the view for the selected state
    }

}

Ich habe immer die Tabellenzelle in der Tabellenzelle auf dem StoryBoard verwendet, möchte aber jetzt einen XIB-Ansatz ausprobieren.

Ich habe den Bezeichner cell in der Zelle XIB hinzugefügt, um ihn mit der Methode dequeueReusableCell aufzurufen.

Was könnte ich falsch machen? Ich habe versucht, das dataSource und das delegate der Tabellenansicht auszugeben, aber ich habe eine Fehlermeldung erhalten (und ich denke, es sind nicht die richtigen Schritte).

12
Adrian

Sie müssen Ihr Federobjekt registrieren.

In viewDidLoad():

let nib = UINib(nibName: "nameOfYourNibFile", bundle: nil)

tableView.register(nib, forCellReuseIdentifier: "yourIdentifier")

Sie müssen auch die Anzahl der Abschnitte zurückgeben:

func numberOfSections(in tableView: UITableView) -> Int {
    return 1
}
45
eLwoodianer

Zunächst müssen Sie Ihr Federobjekt registrieren.

yourTable?.register(UINib(nibName: "yourCustomCell", bundle: nil), forCellReuseIdentifier: "cellIdentifier")
1
Prabhat Pandey