web-dev-qa-db-fra.com

Recharger la méthode de la section dans Swift 3?

J'ai du code écrit en Objective C.Je veux convertir ce code en code Swift3.

[_expandableTableView reloadSections:[NSIndexSet indexSetWithIndex:gestureRecognizer.view.tag] withRowAnimation:UITableViewRowAnimationAutomatic];

Après la conversion en utilisant l'outil en ligne, il m'a donné le code ci-dessous, mais cela ne fonctionne pas

expandableTableView.reloadSections(IndexSet(index: gestureRecognizer.view!.tag), with: .automatic)

Je te prie dis-moi comment faire ceci ?

21
Dhiraj Kumar

Recharger la section dans Swift 3.

recharge de la 0ème section dans la 0ème section, car tableview a par défaut une section indexée à 0.

//let myRange: ClosedRange = 0...0

self.tableViewPostComments.reloadSections(IndexSet(integersIn: 0...0), with: UITableViewRowAnimation.top)

Pour Swift 4

self.tableViewPostComments.reloadSections(IndexSet(integersIn: 0...0), with: UITableView.RowAnimation.top)
35
Jaleel Nazir

faire comme dans Swift3 pour plus d'informations, voir this

expandableTableView.reloadSections(IndexSet(integer: gestureRecognizer.view!.tag), with: .automatic)
33
Dung Tran

Notez qu'après la conversion, NSIndexSet est devenu IndexSet. IndexSet est la superposition Swift) du cadre de la fondation pour NSIndexSet :

La superposition Swift du framework Foundation fournit la structure IndexSet, qui établit un pont avec la classe NSIndexSet et sa sous-classe mutable, NSMutableIndexSet. Le type de valeur IndexSet offre les mêmes fonctionnalités que le type de référence NSIndexSet. deux peuvent être utilisés indifféremment dans le code Swift qui interagit avec les API Objective-C. Ce comportement est similaire à la façon dont Swift relie les types standard de chaîne, numérique et de collection aux classes de fondation correspondantes.

Si vous avez coché la description de la signature de la méthode reloadSections, vous remarquerez qu'il s'agit de:

reloadSections (_ sections: IndexSet, avec animation: UITableViewRowAnimation

Le paramètre sections est IndexSet mais PAS NSIndexSet.

Donc, ce que vous pourriez faire est:

_expandableTableView.reloadSections(NSIndexSet(index: gestureRecognizer.view.tag) as IndexSet, with: .automatic)

OU je préfère ajouter IndexSet sans même utiliser le as IndexSet:

_expandableTableView.reloadSections(IndexSet(integer: gestureRecognizer.view!.tag), with: .automatic)
6
Ahmad F