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 ?
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)
faire comme dans Swift3 pour plus d'informations, voir this
expandableTableView.reloadSections(IndexSet(integer: gestureRecognizer.view!.tag), with: .automatic)
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)