2017-05-19 6 views
0

私はSwift開発、またはiOS開発にかなり興味があります。 私は、webviewを変更するためのURLを含む通知を送信するためにfirebase設定を使って、主にデフォルトのURLを持つwebviewの表示を行っています。セルフコントローラーnil webview

これまでのところ私が管理している:URL通過のためのキーとfirebaseを通じて通知の受信に成功したことを確認します

  • ユーザーが無線LANをオンにしなかった場合のアラートを表示するための到達可能性の使用。 progressIndicator

このすべての

  • 使用法の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) 
        } 
    
    } 
    

    で、この機能では、ここでself.webViewの簡易印刷は私にnilを返すの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) 
    
    } 
    

    にもされてこれは私のchangeUrl機能です。それは私が克服しようとしてきたものですが、そうすることはできません。

    私を助けてもらえますか?

  • +0

    あなたはnilのrequestUrlをチェックしましたか? – Indrajeet

    +0

    こんにちは、ご協力いただきありがとうございます。はい、私はしましたが、その前にエラーが発生します。最後の4行を宣言しなくても、エラーは発生します。 –

    +0

    WebViewはストーリーボードにありますか、それともプログラムで作成していますか? – Rishab

    答えて

    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. 
        } 
    }