2016-04-25 11 views
0

ここではのUIWebViewの同じインスタンス

UIWebView webView 

ViewControllerA { 
    IBOutlet weak var webView : UIWebView 
    override viewDidLoad { 
    doSomething() 
    } 
} 

ViewControllerB { 
    IBOutlet weak var webView : UIWebView (different instance! wrong) 
    override viewDidLoad { 
    doSomethingDifferent() 
    } 
} 

私はviewB にviewAから移動するタブバーコントローラを使用して、私は私を移動したい、私は、このセットアップを持っている私の状況

ですviewAからviewBへのwebView webViewはビデオを再生できるので、viewAまたはviewBのimに応じて、ビューの下部に別の情報を持つ同じWebページを表示できます。

両方のビューが同時にそのように私はwebViewをリロードすることはできません。単に移動してください。

これを達成するためのアイデアはありますか?既にコンテナビューを試しましたが、UIWebViewの2つの異なるインスタンスを作成しています...インターフェースビルダーまたは迅速に行うことは可能ですか?

+0

はたぶんあなたの 'UIWebView'は、共有インスタンスのいくつかの種類として実装する必要があります。多分シングルトンとして。あるいは、グローバル変数を使用するとうまくいくかもしれません。グローバル変数は悪い習慣とみなされますが。 – Andrej

+0

このような場合は、プログラムでUIWebViewをロードする必要があります。あなたはそれをする方法を知っていますか? – Andrej

+0

ほんの小さな警告 - > UIWebViewsを使用したくないと思うかもしれません。代わりに、WKWebviewを見て、メモリの問題なしでまったく同じ機能を提供してください! – trdavidson

答えて

0

以下のコードは、強制アンラッピングによって安全ではありませんが、参照として使用できます。私はglobalWebViewをグローバル変数として宣言しました。

まずビューコントローラ:

var globalWebView: UIWebView? 

class FirstViewController: UIViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     globalWebView = UIWebView(frame: CGRectMake(20, 30, 300, 300)) 
     globalWebView?.loadRequest(NSURLRequest(URL: NSURL(string: "https://www.youtube.com/embed/XLpDiIVX0Wo")!)) 
    } 

    override func viewDidAppear(animated: Bool) { 
     super.viewDidAppear(animated) 
     self.view.addSubview(globalWebView!) 
    } 
} 

第2のビューコントローラ:

class SecondViewController: UIViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 
    } 

    override func viewDidAppear(animated: Bool) { 
     super.viewDidAppear(animated) 
     self.view.addSubview(globalWebView!) 
    } 
} 
+0

グローバル変数 'globalWebView = UIWebView(frame:parentFrame.bounds)でうまく動作し、コンテナービューの正確なサイズと位置をストーリーボードで取得できます。ありがとうございます! – user3931555

関連する問題