1
votes

Impossible de convertir la valeur de type «UITableViewCell» en «SwipeCellKit.SwipeTableViewCell»

J'essaie d'utiliser un pod appelé SwipeCellKit dans mon projet, où ce pod ajoute une classe appelée SwipeTableViewCell. Ce que j'ai fait jusqu'à présent, c'est:

  • Créez un contrôleur de vue pour le storyboard.
  • Créez une classe UIViewController .
  • Importez SwipeCellKit dans le fichier Swift.
  • Attribuez un contrôleur de vue à la classe.
  • Ajoutez une vue de tableau au contrôleur de vue.
  • Connectez le délégué et la source de données de la vue tableau au contrôleur de vue.
  • Ajoutez une cellule prototype à la vue de tableau et nommez-la "cellule" pour son identifiant réutilisable.
  • Changez la classe de cellule en SwipeTableViewCell.
  • Ajoutez un délégué de vue de table au contrôleur de vue.
  • Ajoutez la fonction numberOfRows et cellForRow à ma classe UIViewController.

Ceci est l'implémentation de cellForRow:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell") as! SwipeTableViewCell;
    return cell;
}

Mais j'ai eu une erreur sur le let cell =. .. , en disant:

Impossible de convertir la valeur de type "UITableViewCell" en "SwipeCellKit.SwipeTableViewCell"

Pourquoi? Et comment y remédier? Je pense avoir tout arrangé comme il se doit. Ai-je manqué quelque chose?


5 commentaires

Lors de l'importation de SwipeCellKit, avez-vous vérifié l'appartenance cible?


Sans rapport mais c'est Swift: pas de point-virgule à la fin!


pouvez-vous joindre une démo


essayez de nettoyer et de redémarrer le Xcode


J'ai choisi la réponse de travail pour moi. C'est bizarre que je doive sous-classer davantage la cellule pour pouvoir l'utiliser.


5 Réponses :


2
votes

Vous devez créer votre propre classe Cell en tant que sous-classe de SwipeTableViewCell puis vous devez implémenter le protocole SwipeTableViewCellDelegate dans votre ViewController

et pour cette ligne

let cell = tableView.dequeueReusableCell(withIdentifier: "cell") as! MySwipeableCell
cell.delegate = self

vous devez utiliser le nom de votre classe qui est une SwipeTableViewCell sous-classe

exemple strong >

let cell = tableView.dequeueReusableCell(withIdentifier: "cell") as! SwipeTableViewCell


1 commentaires

Ça marche!!!!!!!!! C'est une solution très étrange, mais ça marche !!!!!! Merci!



1
votes

J'ai créé l'exemple suivant

import UIKit
import SwipeCellKit

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {


    @IBOutlet weak var tableView: UITableView!

    override func viewDidLoad() {
        super.viewDidLoad()
    }
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 4
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "cell") as! SwipeTableViewCell
        return cell
    }

}


class SwipeTableViewCellSubClass: SwipeTableViewCell {

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

}

a défini la classe de votre vue sur SwipeTableViewCellSubClass.

cela devrait parfaitement fonctionner pour vous. bonne chance


0 commentaires

3
votes

Qu'est-ce qui a résolu le problème pour moi:

Dans Main.Storyboard (ou là où vous avez vos vues), assurez-vous que partout où vous souhaitez utiliser la "cellule" réutilisable, dans l'inspecteur d'identité sur le volet de droite, vous avez les éléments suivants :

  • La classe est définie sur SwipeTableViewCell
  • Le module est défini sur SwipeCellKit .

0 commentaires

0
votes

Pour corriger sans créer de classe personnalisée, cliquez simplement sur votre cellule prototype:

 Sélectionnez la cellule prototype

Ensuite, à partir de "l'inspecteur d'identité", sélectionnez "SwipeTableViewCell" comme classe, dans le module "SwipeCellKit", comme ceci:

 Ajouter la classe et le module


0 commentaires

0
votes

cette erreur est due au fait que vous définissez la valeur de la cellule dans viewDidLoad () ftn ().


0 commentaires