gpt4 book ai didi

ios - self Controller nil webview

转载 作者:行者123 更新时间:2023-11-30 12:26:54 24 4
gpt4 key购买 nike

我对 Swift 开发或 iOS 开发还很陌生。我正在制作一个应用程序,主要是显示带有默认 URL 的 Web View ,并使用 Firebase 设置来发送带有 URL 的通知来更改该 Web View 。

到目前为止,我已经做到了:

  • 使用 URL 传递 key 通过 Firebase 成功接收通知;
  • 使用 Reachability 在用户忘记打开 Wi-Fi 时显示警报;
  • 进度指示器的使用

除了 webView url 的更改之外,所有这一切都很顺利。

这是我的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 返回零。这就是我一直试图克服但无法克服的问题。

你能帮我一下吗?

最佳答案

下面是一些针对 Swift 3 进行更新并经过测试的 ViewController 代码。我省略了 Reachability 变量,因为这可能是问题的原因,并且它在问题中未定义。

您会注意到我在 Storyboard 中的 View 中添加了一个按钮,其中包含一个更改 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.
}
}

关于ios - self Controller nil webview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44068166/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com