2017-05-20 11 views
0

別のView ControllerからUIWebiViewを再ロードする際に問題があります。私は、新しいURLを送信し、それをリロードしようとすると、webviewのためにアプリケーションがクラッシュするnilされています。別のViewControllerからの新しいURLでWebViewを再ロードする

私は問題を絞り込むための簡単なテストアプリケーションを作った。現在は、ウェブ上にgoogleと表示されているボタンが表示された単純なページです。ボタンを押すと、モーダルに別のページが表示されます。このページには1つのボタンしかありません。このボタンを押すと、それ自体が解除され、最初のビューで新しいURLで最新表示する機能が呼び出されます。 HERESに私のコード:

class ViewController: UIViewController { 

    @IBOutlet var webView: UIWebView! 
    override func viewDidLoad() { 
     super.viewDidLoad() 

     let urlRequest = NSURLRequest(URL: NSURL(string: "https://www.google.com")!) 
     webView.loadRequest(urlRequest) 
    } 

    @IBAction func showViewPressed(sender: AnyObject) { 
     let showView = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("showView") 
     self.presentViewController(showView, animated: true, completion: nil) 
    } 

    func reloadWebView(newURL: String) { 
     let urlRequest = NSURLRequest(URL: NSURL(string: newURL)!) 
     webView.loadRequest(urlRequest) 
    } 

} 

と2番目のビューのために:

class ReloadViewController: UIViewController { 

    @IBAction func buttonPressed(sender: AnyObject) { 
     dismissViewControllerAnimated(true, completion: { 
      ViewController().reloadWebView("https://www.yahoo.com") 
     }) 
    } 

} 

それはfatal error: unexpectedly found nil while unwrapping an Optional value

+0

ビューコントローラ間でウェブビューを共有しようとしないのはなぜですか?あなたのプロジェクトをGithubにプッシュして、あなたのコードを見ることができ、私は助けてくれるでしょうか? –

答えて

0

よしでクラッシュし、私が質問をする前に、私は解決策を見つけようと時間を費やしているようです無駄に。それから私は解決策を見つけることはないと思う質問を投稿して5分後に...私はそれを見つける。そこで、私はテーブルビューhereの解決策を見つけました。これもwebviewsに当てはまりました。同じものを探して、将来的に誰のためので、HERESに私がやったこと:

class ViewController: UIViewController { 

    @IBOutlet var webView: UIWebView! 
    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 
     let urlRequest = NSURLRequest(URL: NSURL(string: "https://www.google.com")!) 
     webView.loadRequest(urlRequest) 

     NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(reloadWebView), name:"reload", object: nil) 

    } 

    @IBAction func showViewPressed(sender: AnyObject) { 
     let showView = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("showView") 
     self.presentViewController(showView, animated: true, completion: nil) 
    } 

    func reloadWebView() { 
     let urlRequest = NSURLRequest(URL: NSURL(string: "https://yahoo.com")!) 
     webView.loadRequest(urlRequest) 
    } 

} 

と2番目のビューのために:

class ReloadViewController: UIViewController { 

    @IBAction func buttonPressed(sender: AnyObject) { 
     dismissViewControllerAnimated(true, completion: { 
      NSNotificationCenter.defaultCenter().postNotificationName("reload", object: nil) 
     }) 
    } 

} 

、それは美しく働きました!

関連する問題