J'ai une vue de table qui a un bouton et l'étiquette contenant une valeur de chaîne qui est peuplée à partir d'un appel d'API. Je veux obtenir la chaîne dans l'étiquette et transmettre à un autre contrôleur d'affichage chaque fois que je sélectionne le bouton. Comment puis-je obtenir les valeurs de chaîne? P>
3 Réponses :
Vous devez utiliser Pour cet exemple, je suppose que vous disposez d'une gamme de chaînes que vous utilisez pour définir les titres dans utableviewelegate code> 's méthode dactSelectrowat code> CellforatRat Code>: P> func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let string = data[indexPath.row]
}
//In case your data list contains another object,
//you access the string property the same way
(let string = data[indexPath.row].name)
Vous pouvez essayer ceci. Cette méthode obtient la position du bouton lorsqu'il est taraudé afin d'obtenir la cellule de la tableView. Ensuite, saisissez la chaîne que vous souhaitez et instanciez et appuyez sur votre contrôleur d'affichage suivant.
func buttonTapped(sender: AnyObject) {
let buttonPosition = sender.convert(CGPoint.zero, to: tableView)
let indexPath = tableView.indexPathForRow(at: buttonPosition)
if indexPath != nil {
cell = tableView.cellForRowAt(indexPath: indexPath)
let myString = cell.label.text
let nextVC = NextViewController.instance()
nextVC.someString = myString
navigationController.pushViewController(nextVc)
}
}
En supposant que vous avez créé un prototype de cellule avec une étiquette et un bouton, vous avez connecté le bouton à un @ibaction code> dans votre classe de cellules, voici l'approche "Fermeture de rappel": < Pré> xxx pré> p>
Ne recevez pas la chaîne de la cellule - obtenez-la de votre source de données. Utilisez un modèle de protocole / délégué ou de «fermeture de rappel». Un petit bouton de recherche de
UitailViewCell code> vous donnera beaucoup de réponses, de blogs, de tutoriels, etc. pour vous aider à trouver la meilleure approche pour vos besoins spécifiques.