添加“完成”按钮以关闭以编程方式创建的UIViewController

时间:2015-09-02 06:52:40

标签: ios swift uiviewcontroller

我是一个快速的新手并制作了一个演示应用程序,它在故事板中有一个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

5 个答案:

答案 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)
    }
相关问题