我是一个快速的新手并制作了一个演示应用程序,它在故事板中有一个UIViewController和UITableViewController。 UIViewController有一个Collection View和一个嵌入式导航控制器。在点击集合视图单元格时,应用程序将转到UITableViewController。我也可以从UITableViewController回到我的UIViewController。这一切都运作良好。现在,我的UITableViewController中的一些行有URL。在点击URL时,我以编程方式在UIviewcontroller中创建webview并获取要加载的URL。问题是我无法关闭webview并在此之后返回到我的UITableViewController。这是我在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)
如何为这个以编程方式创建的UIviewcontroller添加一个Done按钮来关闭webview并返回到我的UITableViewController
答案 0 :(得分:23)
您可以将mywebViewController
打包在UINavigationController
中,然后将rightBarButtonItem
设置为UIBarButtonItem(barButtonSystemItem: .Done, target: self, action: "dismiss")
,如下所示:
let navController = UINavigationController(rootViewController: mywebViewController)
mywebViewController.navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .Done, target: self, action: "dismiss")
self.navigationController!.presentViewController(navController, animated: true, completion: nil)
并在dismiss
中添加UITableViewController
功能:
func dismiss() {
self.dismissViewControllerAnimated(true, completion: nil)
}
答案 1 :(得分:0)
将完成按钮添加到您呈现的ViewController并为其执行操作。 要解雇ViewController,请尝试:
self.dismissViewControllerAnimated(true, completion: nil)
答案 2 :(得分:0)
在mywebViewController
及其@IBAction
中添加按钮,然后致电
self.dismissViewControllerAnimated(true, completion: nil)
答案 3 :(得分:0)
你可以做一件事。
当您将mywebViewController
推入导航控制器时,请使导航栏可见。
只需点按导航栏中的“返回”按钮即可轻松关闭mywebViewController
。
希望这会对你有所帮助。 :)
答案 4 :(得分:0)
Swift 4和5的更新
您在VC中导航
navController.navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Done", style: .done, target: self, action: #selector(self.dismiss))
必须将选择器声明为@objc函数
@objc func dismiss(){
self.dismiss(animated: true)
}