我对Swift开发或iOS开发很新。 我正在创建一个应用程序,主要是使用默认URL显示webview,并使用firebase设置以发送带有URL的通知以更改该webview。
到目前为止,我已成功:
除了更改webView网址外,所有这一切都顺利进行。
这是我的viewDidAppear
class ViewController: UIViewController, UIWebViewDelegate {
@IBOutlet var webView: UIWebView!
@IBOutlet weak var progressIndicator: UIActivityIndicatorView!
@IBOutlet weak var fakeLogo: UIImageView!
let reachability = Reachability()!
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewDidAppear(_ animated: Bool){
if reachability.isReachable {
if reachability.isReachableViaWiFi {
print("Reachable via WiFi")
} else {
print("Reachable via Cellular")
}
let myUrl = NSURL(string:"https://www.btp.pt")
let myRequest = NSURLRequest(url: myUrl! as URL);
webView.delegate = self
webView.loadRequest(myRequest as URLRequest)
} else {
//print("Network not reachable")
let alert = showNetworkDialogHelper()
alert.showNetworkDialog(fromController: self)
}
}
这是我的changeUrl函数,也在ViewController
中 func changeWebviewURL(url: String) {
print("changeWebviewURL : \(url)")
//print(self.webView) returns nil and
//fatal error: unexpectedly found nil while unwrapping an Optional value
let stringUrl = url
let requestUrl = URL(string: stringUrl);
let myRequestUrl = URLRequest(url: requestUrl! as URL);
self.webView!.loadRequest(myRequestUrl)
}
这个函数中self.webView的简单打印返回给我一个零。这就是我一直在努力克服但却无法克服的。
你能帮我吗?
答案 0 :(得分:0)
这里有一些为Swift 3更新的ViewController代码,并且已经过测试。我已经省略了Reachability var,因为这可能是问题的原因,并且在问题中未定义。
您会注意到我在故事板中为视图添加了一个按钮,其中的操作可以更改webView指向的URL。
class ViewController: UIViewController, UIWebViewDelegate {
@IBOutlet weak var webView: UIWebView!
@IBAction func buttonAction(_ sender: Any) {
self.changeWebviewURL(url: "http://www.apple.com")
}
override func viewDidLoad() {
super.viewDidLoad()
let url = URL(string: "https://www.google.com")
let request = URLRequest(url: url!)
self.webView.loadRequest(request)
self.webView.delegate = self
}
func changeWebviewURL(url: String) {
print("changeWebviewURL : \(url)")
let myUrl = URL(string: url)
let request = URLRequest(url: myUrl!)
self.webView.loadRequest(request)
print(self.webView)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}