我正在尝试创建一个QR应用程序,但我没有得到最后一步的工作。在Xcode的另一个ViewController中打开QR链接
今天,当我进行扫描时,我得到了一个提醒结果。我希望将该链接直接发送到我的webview控制器,并在我的webView中读取地址,而不是显示警报。
ViewController.swift
func reader(_ reader: QRCodeReaderViewController, didScanResult result: QRCodeReaderResult) {
reader.stopScanning()
dismiss(animated: true) { [weak self] in
let alert = UIAlertController(
title: "Hittade",
message: String (format:"%@", result.value, result.metadataType),
preferredStyle: .alert
)
alert.addAction(UIAlertAction(title: "OK", style: .cancel, handler: nil))
self?.present(alert, animated: true, completion: nil)
}
}
webview.swift
@IBOutlet var containerView: UIView? = nil
var webView: WKWebView?
override func viewDidLoad() {
super.viewDidLoad()
let myURL = URL(string: "MY RESULT URL HERE")
let myRequest = URLRequest(url: myURL!)
_ = webView?.load(myRequest)
}
编辑 感谢您的帮助@sharon!
我已经完成了这项工作。 不过,也有一些错误消息
见下
链接的图片ViewController.swift
func reader(_ reader: QRCodeReaderViewController, didScanResult result: QRCodeReaderResult) {
reader.stopScanning()
dismiss(animated: true) { [weak self] in
let alert = UIAlertController(
title: "Hittade",
message: String (format:"%@", result.value, result.metadataType),
preferredStyle: .alert
)
var qrLink: String?
qrLink = "\(result.value)\(result.metadataType)"
performSegue(withIdentifier: "WebView", sender: self)
alert.addAction(UIAlertAction(title: "OK", style: .cancel, handler: nil))
self?.present(alert, animated: true, completion: nil)
}
}
func prepare(for segue: UIStoryboardSegue, sender: Any?){
if segue.identifier == "WebView" {
let webView = segue.destination as! webview
webView.qrLink = "%@"
}}
func reader(_ reader: QRCodeReaderViewController, didSwitchCamera newCaptureDevice: AVCaptureDeviceInput) {
if let cameraName = newCaptureDevice.device.localizedName {
print("Switching capturing to: \(cameraName)")
}
}
func readerDidCancel(_ reader: QRCodeReaderViewController) {
reader.stopScanning()
dismiss(animated: true, completion: nil)
}
}
webview.swift
import AVFoundation
import UIKit
import WebKit
class WebView: UIViewController, QRCodeReaderViewControllerDelegate {
@IBOutlet var containerView: UIView? = nil
var webView: WKWebView?
override func viewDidLoad() {
super.viewDidLoad()
setNeedsStatusBarAppearanceUpdate()
view.backgroundColor = UIColor(red: 109/255, green: 167/255, blue: 215/255, alpha: 1)
var qrLink: String?
var webView: UIWebView?
super.viewDidLoad()
let myURL = URL(string: qrLink!)
let myRequest = URLRequest(url: myURL!)
webView = UIWebView(frame: CGRect(x: 0, y: 0, width:
UIScreen.main.bounds.width, height:
UIScreen.main.bounds.height))
webView?.loadRequest(myRequest)
view.addSubview(webView!)
}
}
这听起来很合理! :-) 我该如何做到这一点最简单的入门? (我是一个很大的初学者) –
查看我的回答以上 (试着回答,但它在你的文章上方) –