web-dev-qa-db-fra.com

Cellule de Xib avec Swift 3

J'ai déjà lu et vu quelques vidéos sur ce sujet mais je n'arrive pas à le faire fonctionner. Im essayant une cellule d'un xib au lieu du storyboard.

Ceci est mon ViewController (où j'ai la vue Table).

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;

    }

}

Voici mon CellTableView (la classe où j'ai mon Cell):

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
    }

}

J'ai toujours utilisé la cellule Table View dans la vue Table sur le StoryBoard, mais je veux essayer une approche XIB maintenant.

J'ai ajouté l'identifiant cell sur la cellule XIB pour l'appeler avec la méthode dequeueReusableCell.

Qu'est-ce que je pourrais faire de mal? J'ai essayé de sortir le dataSource et le délégué de la vue de la table mais j'ai eu une erreur (et je pense que ce ne sont pas les bonnes étapes).

12
Adrian

Vous devez enregistrer votre objet nib.

Dans viewDidLoad():

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

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

Vous devez également renvoyer le nombre de sections:

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

Tout d'abord, vous devez enregistrer votre objet nib.

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