Personnalisé UITableViewCell de plume en Swift

Je suis en train de créer une table personnalisée vue de cellules à partir d'une plume. Je fais référence à cet article ici. Je suis confronté à deux problèmes.

J'ai créé un .xib fichier avec un UITableViewCell objet glissé sur elle. J'ai créé une sous-classe de UITableViewCell et la définir comme la cellule de la classe et Cellule comme le réutilisables identificateur.

import UIKit

class CustomOneCell: UITableViewCell {

    @IBOutlet weak var middleLabel: UILabel!
    @IBOutlet weak var leftLabel: UILabel!
    @IBOutlet weak var rightLabel: UILabel!

    required init(coder aDecoder: NSCoder!) {
        super.init(coder: aDecoder)
    }

    override init(style: UITableViewCellStyle, reuseIdentifier: String!) {
        super.init(style: style, reuseIdentifier: reuseIdentifier)
    }

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

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

        //Configure the view for the selected state
    }

}

Dans le UITableViewController j'ai ce code,

import UIKit

class ViewController: UITableViewController, UITableViewDataSource, UITableViewDelegate {

    var items = ["Item 1", "Item2", "Item3", "Item4"]

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    //MARK: - UITableViewDataSource
    override func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int {
        return items.count
    }

    override func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! {
        let identifier = "Cell"
        var cell: CustomOneCell! = tableView.dequeueReusableCellWithIdentifier(identifier) as? CustomOneCell
        if cell == nil {
            tableView.registerNib(UINib(nibName: "CustomCellOne", bundle: nil), forCellReuseIdentifier: identifier)
            cell = tableView.dequeueReusableCellWithIdentifier(identifier) as? CustomOneCell
        }

        return cell
    }
}

Ce code est conforme à aucune erreur, mais quand je le lance dans le simulateur, il ressemble à ceci.

Personnalisé UITableViewCell de plume en Swift

Dans le UITableViewController dans la table de montage, je n'ai rien fait pour la cellule. Vide identifiant et pas de sous-classe. J'ai essayé d'ajouter le Cellule identifiant pour le prototype de la cellule et il a couru de nouveau, mais j'obtiens le même résultat.

Une autre erreur que j'ai rencontré est, quand j'ai essayé de mettre en œuvre la méthode suivante dans la UITableViewController.

override func tableView(tableView: UITableView!, willDisplayCell cell: CustomOneCell!, forRowAtIndexPath indexPath: NSIndexPath!) {

    cell.middleLabel.text = items[indexPath.row]
    cell.leftLabel.text = items[indexPath.row]
    cell.rightLabel.text = items[indexPath.row]
}

Comme indiqué dans l'article, j'ai mentionné, j'ai changé le cell paramètre de forme de type UITableViewCell à CustomOneCell qui est mon sous-classe de UITableViewCell. Mais j'obtiens l'erreur suivante,

Méthode de remplacement avec le sélecteur 'tableView:willDisplayCell:forRowAtIndexPath:' a de type incompatible '(UITableView!, CustomOneCell!, NSIndexPath!) -> ()'

Quelqu'un a une idée de comment résoudre ces erreurs? Ces semblait bien fonctionner en Objective-C.

Merci.

EDIT: je viens de remarquer que si je change le simulateur de l'orientation paysage et de le rallumer pour le portrait, les cellules apparaissent! Je ne pouvais toujours pas à comprendre ce qu'il se passe. J'ai téléchargé un projet Xcode ici montrant le problème si vous avez le temps pour un coup d'oeil.

InformationsquelleAutor Isuru | 2014-08-28