J'ai rencontré l'erreur suivante dans ce code:
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell: UITableViewCell? = tableView.dequeueReusableCellWithIdentifier("Cell") as? UITableViewCell
ERREUR: Downcast à partir de 'UITableViewCell?' pour 'UITableViewCell' ne déballe que les options; vouliez-vous utiliser '!'?
Des idées?
Dans Swift2.0
, la méthode dequeueReusableCellWithIdentifier
est déclarée comme:
@available(iOS 6.0, *)
func dequeueReusableCellWithIdentifier(identifier: String, forIndexPath indexPath: NSIndexPath) -> UITableViewCell
Vous ne devriez pas transtyper UITableViewCell
en UITableViewCell?
. Voir le code ci-dessous.
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("reuseIdentifier", forIndexPath: indexPath)
// Configure the cell...
return cell
}
J'espère que cela t'aides!
À partir de Xcode 7, dequeueReusableCellWithIdentifier
renverra toujours un UITableViewCell
non facultatif.
Vous n'avez même pas besoin de spécifier le type, il peut être écrit succinctement comme suit:
let cell = tableView.dequeueReusableCellWithIdentifier("Cell")
ou si vous avez une sous-classe personnalisée de UITableViewCell
guard let cell = tableView.dequeueReusableCellWithIdentifier("Cell") as? SomeOtherCell else { fatalError("unexpected cell dequeued from tableView") }
CMessageCell=self.MessageTable.dequeueReusableCellWithIdentifier("CustomMessageCell") as! CustomMessageCell
Utilisez ceci à la place
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell: UITableViewCell = tableView.dequeueReusableCellWithIdentifier("Cell")