为什么在iOS 8中webView为空,而在iOS 9中不为空?
我应该如何在iOS 8中使用webview?以下是代码(swift 2.2)
在viewController类中:
@IBOutlet weak var webView: UIWebView!
override func viewDidLoad() {
super.viewDidLoad()
self.webView?.delegate = self // without '?' in iOS 8 crash
// in iOS 9 not crash
// debug code
if let webView = self.webView { // iOS 8 nil
print("\(webView)") // iOS 9 not nil
}
//...
}谢谢!
发布于 2016-07-23 22:06:18
class ViewController: UIViewController, UIWebViewDelegate {
@IBOutlet weak var webView: UIWebView!
let url = NSURL(string: "http://google.com")
override func viewDidLoad() {
super.viewDidLoad()
self.webView.delegate = self
let req = NSURLRequest(URL : url!)
self.webView.loadRequest(req)
}
func webViewDidStartLoad(webView: UIWebView) {
print("start loading")
}
func webViewDidFinishLoad(webView: UIWebView) {
print("finish loading")
}
//...
}如下所示,此代码可以在iOS8和iOS9中完美运行
发布于 2016-07-28 23:11:04
一种解决方案:
@IBOutlet weak var webViewXib: UIWebView!
var webView: UIWebView!
override func viewDidLoad() {
super.viewDidLoad()
if let _ = self.webViewXib {
self.webView = self.webViewXib
} else {
self.webView = UIWebView()
self.webView.frame = self.view.bounds
self.view.addSubview(self.webView!)
}
self.webView!.delegate = self
// ...
}发布于 2017-04-19 04:48:41
问题在于实例化View Controller的方式,您可能会将其实例化为:
MyViewController *myViewController = [[MyViewController alloc] init]
这样,您就不会在viewDidLoad中准备好视图,相反,您应该尝试:
MyViewController *myViewController = [[MyViewController alloc] initWithNibName:"MyViewController" bundle:nil]
https://stackoverflow.com/questions/38520219
复制相似问题