Je suis un débutant de Swift et j'ai créé une application de démonstration contenant un UIViewController et un UITableViewController dans le Storyboard. UIViewController a une vue Collection et un contrôleur de navigation intégré. Lorsque vous appuyez sur une cellule de vue de collection, l'application passe à UITableViewController. Je peux également revenir à mon UIViewController à partir de UITableViewController. Tout cela fonctionne bien. Maintenant, certaines des lignes de mon UITableViewController ont des URL. En tapant sur une URL, je crée par programmation une vue Web à l'intérieur d'un UIviewcontroller et récupère l'URL à charger. Le problème est que je ne peux pas ignorer la vue Web et revenir à mon UITableViewController après cela. C'est le code que j'ai dans ma classe UITableViewController:
// When user taps a row, get the URL and load it in a webview
let mywebViewController = UIViewController()
let webView = UIWebView(frame: mywebViewController.view.bounds)
webView.loadRequest(NSURLRequest(URL: url)) // url from the row a user taps
mywebViewController.view = webView
self.navigationController!.presentViewController(mywebViewController, animated: true, completion: nil)
Comment puis-je ajouter un bouton Terminé à ce UIviewcontroller créé par programme pour fermer la vue Web et revenir à mon UITableViewController
Vous pouvez envelopper la mywebViewController
dans une UINavigationController
, puis définir la rightBarButtonItem
à UIBarButtonItem(barButtonSystemItem: .Done, target: self, action: "dismiss")
comme ceci:
let navController = UINavigationController(rootViewController: mywebViewController)
mywebViewController.navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .Done, target: self, action: "dismiss")
self.navigationController!.presentViewController(navController, animated: true, completion: nil)
et ajoutez une fonction dismiss
dans votre UITableViewController
:
func dismiss() {
self.dismissViewControllerAnimated(true, completion: nil)
}
Vous pouvez faire une chose.
Lorsque vous poussez votre mywebViewController
dans le contrôleur de navigation, rendez la barre de navigation visible.
En appuyant simplement sur le bouton Précédent dans la barre de navigation, vous pouvez facilement ignorer votre mywebViewController
.
J'espère que cela vous aide. :)
Ajoutez le bouton done (Terminé) à votre ViewController présenté et effectuez une action correspondante. Pour fermer ViewController, essayez ceci:
self.dismissViewControllerAnimated(true, completion: nil)
Bouton Ajouter dans mywebViewController
et dans son @IBAction
, appelez
self.dismissViewControllerAnimated(true, completion: nil)