2017-02-02 1 views
0

J'ai regardé une autre question qui posait exactement la même question que la mienne, mais la réponse leur a dit d'appeler la fonction setEditing (que j'ai essayé, et dire plus tard dans la question). Mais je ne vois pas comment vous pourriez appeler cette fonction seulement quand le bouton d'édition est cliqué. Je suppose que je pourrais créer mon propre BarButtonItem et lancer cette méthode quand on clique sur mon bouton, mais je me suis dit que ce serait beaucoup plus simple car j'ai besoin de la fonctionnalité de base du bouton d'édition.Le bouton Modifier n'a aucune fonctionnalité, aucun cercle rouge avec un signe moins apparaît sur le côté gauche des cellules

J'ai un UIViewController qui a une table nommée peersTable. Quand je clique sur le bouton d'édition, il passe à done, mais rien ne se passe sur la table. J'ai également ajouté mes propres UITableViewRowActions et quand je balaye vers la gauche sur les cellules, mes actions personnalisées apparaissent.

Voici une partie de mon code:

class PeerViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, ConnectionManagerDelegate { 

@IBOutlet weak var peersTable: UITableView! 
... 

override func viewDidLoad() { 
    ... 
    peersTable.delegate = self 
    peersTable.dataSource = self 

    self.navigationItem.rightBarButtonItem = self.editButtonItem 
    ... 
} 

J'ai aussi essayé d'appeler le peersTable.setEditing (vrai, animé: vrai) méthode moi-même, et dans ce cas, le moins rouge n'apparaît. Je n'ai jamais vu ce problème auparavant, donc je ne comprends pas pourquoi ça se passe. Est-ce que je mets en quelque sorte le délégué mal? Ou peut-être que je fais quelque chose de mal puisque c'est une Vue régulière et non une TableView (même si j'ai déjà fait cela dans un projet précédent).

Merci d'avance! Si vous avez besoin de plus d'informations faites le moi savoir!

+0

J'ai aussi fait face au même problème. J'ai connecté la vue tabulaire avec la classe en créant une propriété tableView dans la classe comme une sortie. @IBOutlet faible var productTableView: UITableView! . La tableView dans le storyboard et la propriété tableView doivent être connectées. Bien que je ne sais pas pourquoi cela a fonctionné. – mumu

+0

@RubaiyatJahanMumu Je suppose que vous voulez dire par ctrl + en faisant glisser la tableView dans la classe PeerViewController, ce que j'ai déjà fait "@IBOutlet faible var peersTable: UITableView!" (puis défini en tant que délégué et source de données). À moins que vous ne vouliez dire autre chose ... – Logan

+0

Avez-vous implémenté d'autres méthodes de délégué, en particulier 'func tableView (_: editingStyleForRowAt:)'? Si c'est le cas, vous devrez retourner '.delete' ici. –

Répondre

1

Comme il ne s'agit pas d'un TableViewController, il ne passera pas automatiquement en mode d'édition de tableView lorsque vous appuyez sur le bouton d'édition.

Vous devez remplacer la méthode setEditing pour pouvoir définir le mode tableView en mode édition.

Ajouter à votre classe ViewController:

override func setEditing(_ editing: Bool, animated: Bool) { 
    super.setEditing(editing, animated: animated) 
    peersTable.setEditing(editing, animated: animated) 
} 
+0

Merci, ça l'a corrigé! – Logan