J'ai la fonction onClick suivante
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
tableView.deselectRowAtIndexPath(indexPath, animated: true)
let row = indexPath.row
println("Row: \(row)")
println(meetingArray[row] as! String)
}
qui affiche le texte sur la cellule sur laquelle vous cliquez. Cela fonctionne bien.
Je me demande simplement comment vous définiriez une fonction qui vous dirigerait vers le nouveau contrôleur de vue
par programme:
let destination = UIViewController() // Your destination
navigationController?.pushViewController(destination, animated: true)
Storyboard:
Vous devez d’abord définir un identifiant pour votre vue. Dans la capture d'écran ci-dessous, vous pouvez voir où entrer l'identifiant.
Après cela, vous pouvez créer une "destination" et l'envoyer au contrôleur de navigation à l'aide du code ci-dessous:
let storyboard = UIStoryboard(name: "Main", bundle: Bundle.main)
let destination = storyboard.instantiateViewController(withIdentifier: "YourViewController") as! YourViewController
navigationController?.pushViewController(destination, animated: true)
Segue:
Vous devez d’abord définir un identifiant pour votre segment comme indiqué ci-dessous:
performSegue(withIdentifier: "segue", sender: self)
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "segue" {
// Setup new view controller
}
}
EDIT: mis à jour pour Swift 3.x
Dans le storyboard, définissez storyboardId de votre viewController dans l'inspecteur d'identité.
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
tableView.deselectRowAtIndexPath(indexPath, animated: true)
let row = indexPath.row
println("Row: \(row)")
println(meetingArray[row] as! String)
let secondViewController = self.storyboard.instantiateViewControllerWithIdentifier("storyBoardIdFor your new ViewController") as SecondViewController
self.navigationController.pushViewController(secondViewController, animated: true)
}
Pour les autres utilisateurs qui viennent à cette question, si vous avez des cellules statiques dans un UITableViewController
, vous pouvez simplement contrôler le glisser de la cellule vers le nouveau contrôleur de vue.
Vous pouvez également le faire sur des cellules dynamiques si vous n'avez pas besoin de transmettre de données au prochain contrôleur de vue. Toutefois, si vous devez transmettre des données, vous devez séparer le contrôleur de vue de la vue tableau lui-même et non la cellule . Ensuite, appelez la segue par programmation.
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
self.performSegue(withIdentifier: "mySegueIdentifier", sender: self)
}
Essayez ça ça marche pour moi,
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
print("You tapped cell number \(indexPath.section).")
print("Cell cliked value is \(indexPath.row)")
if(indexPath.row == 0)
{
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let controller = storyboard.instantiateViewController(withIdentifier: "LoginViewController") as! LoginViewController
self.navigationController?.pushViewController(controller, animated: true)
}
}
J'espère que cela aidera pour quelqu'un.