2016-10-26 5 views
6

Ich habe schon einige Videos über dieses Thema gelesen und gesehen, aber ich kann das nicht zum Laufen bringen. Ich versuche, eine Zelle von einem Xib anstelle des Storyboards zu finden.Zelle von Xib mit Swift 3

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; 

    } 

} 

Das ist mein CellTableView (die Klasse, wo ich mein Handy haben):

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 die Tabellenansicht Zelle in der Tabellenansicht auf dem Storyboard immer dann verwendet, aber ich möchte eine XIB Ansatz versuchen jetzt.

Ich fügte die Zelle Identifier auf der Zelle XIB hinzu, um sie mit der dequeueReusableCell-Methode aufzurufen.

Was könnte ich falsch machen? Ich habe versucht, die dataSource und die Delegierten der Tabellenansicht aus, aber ich habe einen Fehler (und ich denke, es ist nicht die richtigen Schritte).

Antwort

33

Sie müssen Ihr Nib-Objekt registrieren.

In viewDidLoad():

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

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

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

func numberOfSections(in tableView: UITableView) -> Int { 
    return 1 
} 
+0

Sie meinen die Zellkennung, richtig? So in der Viewcontroller muss ich nur sagen: lassen nib = UINib (nibName: "Zelle", Bündel: null) tableView.register (nib, forCellReuseIdentifier: "Zelle") ? Es hat nicht funktioniert. Meine Zellen sind immer noch leer. – Adrian

+2

Entschuldigung, ich meinte eigentlich den Namen Ihrer Nib-Datei. Sollte wohl "CellTableView" in deinem Fall sein ... – eLwoodianer

+0

ich sehe. Danke Sam. es funktioniert jetzt. – Adrian

2

Zunächst einmal, Sie haben Ihre nib Objekt zu registrieren.

yourTable?.register(UINib(nibName: "yourCustomCell", bundle: nil), forCellReuseIdentifier: "cellIdentifier") 
Verwandte Themen