ios - 使用 Swift 4 关闭 WKWebView 并更改 ViewController
问题描述
我开始掌握 Swift 4 和 Xcode。
我不知道打开 WKWebView 后如何关闭它!
我正在使用它来显示 PDF 文档,并添加了一个带有“完成”按钮的导航栏。
我已经弄清楚如何关闭它并转到 Root UIViewController,但是我希望它转到一个名为“DocumentsViewController”的视图控制器。
下面是我正在使用的代码,但是我相信我要修复的行是:
let doneItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonItem.SystemItem.done, target: nil, action: #selector(selectAction(_:)))
selectAction 是:
@objc func selectAction(_ sender:UIBarButtonItem) -> Void {
//print("Select Clicked")
self.view.window?.rootViewController?.dismiss(animated: true, completion: nil)
}
我花了几个小时试图弄清楚这一点!我怎样才能做到这一点,当我单击完成按钮时,它会关闭 WKWebView 并转到“DocumentsViewController”?
@objc func selectAction(_ sender:UIBarButtonItem) -> Void {
//print("Select Clicked")
self.view.window?.rootViewController?.dismiss(animated: true, completion: nil)
}
override func viewDidLoad() {
super.viewDidLoad()
if let url = Bundle.main.url(forResource: pdfTitle, withExtension: "pdf") {
let webView = WKWebView(frame: self.view.frame)
let urlRequest = URLRequest(url: url)
webView.load(urlRequest as URLRequest)
self.view.addSubview(webView)
self.tabBarController?.tabBar.isHidden = true
let screenSize: CGRect = UIScreen.main.bounds
let navBar: UINavigationBar = UINavigationBar(frame: CGRect(x: 0, y: 0, width: screenSize.width, height: 44))
self.view.addSubview(navBar);
let navItem = UINavigationItem(title: "");
let doneItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonItem.SystemItem.done, target: nil, action: #selector(selectAction(_:)))
navItem.rightBarButtonItem = doneItem;
navBar.setItems([navItem], animated: false);
// Get height of status bar (iPhone X introduced a new status bar)
let statusBarHeight = UIApplication.shared.statusBarFrame.height
// Initialize the frame
webView.frame = CGRect.init(x: 0, y: statusBarHeight, width: view.bounds.maxX, height: view.bounds.maxY)
// Set background color of status bar (optional)
self.view.backgroundColor = UIColor(red: 248/255.0, green: 248/255.0, blue: 248/255.0, alpha: 1.0)
}
解决方案
只需将您的新视图添加到导航堆栈...
@objc func selectAction(_ sender:UIBarButtonItem) -> Void {
let newViewController = DocumentsViewController()
self.navigationController?.pushViewController(newViewController, animated: true)
}
推荐阅读
- arrays - perl中两个数组的比较
- python - 在区域中找到最后一个字符串后添加新行
- c# - 如何反序列化对 C# 对象的单个属性响应?
- assembly - 如何反转符号扩展?
- java - 当用户单击 JDialog 中的按钮时,如何将输入的数据从 JDialog 传递到父 JFrame?
- javascript - 表格不包含在电子邮件正文中
- reactjs - 如何处理本地存储和 SSR?
- mysql - mysql/mariadb 中的数据库条目连续记录 - 直到今天
- javascript - 扩展 Uint8Array 然后 map 给出错误的结果
- javascript - 如何删除 ReactJs 中的待办事项?