J'essaie de faire en sorte que lorsqu'un utilisateur clique sur une cellule de vue de tableau dans ma vue de tableau, elle le dirige vers un nouveau contrôleur de vue. Plus précisément, lorsqu'un utilisateur clique sur le nom d'utilisateur d'une personne, il doit le transférer dans son profil. le nom d'utilisateur étant la cellule de la vue table et le profil étant le nouveau contrôleur de vue. Je pensais que la manière de faire était d'utiliser ".presentViewController (vc, animé: true, complétion: nil), mais lorsque je le fais, il est indiqué que" myCell n'a pas de membre nommé .presentViewController "
Si quelqu'un pouvait m'aider à résoudre ce problème, il serait grandement apprécié.
presentViewController:animated:completion
est une méthode d'instance de UIViewController
pas UIView
ou d'une sous-classe de. Vous pouvez essayer ceci:
self.window?.rootViewController.presentViewController(specificViewController, animated: true, completion: nil)
Cependant, je suggère que vous utilisiez la méthode presentViewController:animated:completion:
de UIViewController
. Un mécanisme de rappel peut être réalisé entre UIViewController
et cell
.
Comme ci-dessous: Obtenir le clic du bouton dans la cellule de la vue tableau de l'interface utilisateur
La réponse de Banning fonctionne, mais la syntaxe est ancienne. De Swift 4 :
self.window?.rootViewController?.present(vc, animated: true, completion: nil)
Swift3
version
let storyboard = UIStoryboard(name: "MainViewController", bundle: nil)
let messagesViewController = storyboard.instantiateViewController(withIdentifier: "MessagesViewController") as! MessagesViewController
self.window?.rootViewController?.present(messagesViewController, animated: true, completion: nil)
Si vous avez créé une classe séparée pour tableView
, ce qui est une bonne pratique, vous pouvez le faire comme suit:
Commencez par créer addTarget où la cellule est créée (cellForRowAt):
cell.dropdownBtn.addTarget(self, action: #selector(self.openListPickerVC(_:)), for: .touchUpInside)
Après cela, présentez le contrôleur de vue dans openListPickerVC ():
@objc func openListPickerVC(_ sender: UIButton) {
let index = sender.tag
let vc: PickerViewController = UIStoryboard(name: "Main", bundle:
Bundle.main).instantiateViewController(withIdentifier:
"PickerViewController") as! PickerViewController
self.present(vc, animated: true, completion: nil)
}