2016-11-30 19 views
0

私はの下にある簡単なアプリケーションでwebViewを持っています。 webViewがデータを読み込み、Webビューデリゲートのメソッドを起動するまで、UIImageViewを表示するつもりです。 Webviewはデータをロードし、デリゲートメソッドは正常と呼ばれます。しかし、私はUIImageViewのような他のビューを操作するのに問題があります。UIWebView代理人は他のビューを変更しません

ここは私のコードです。

class ViewController: UIViewController,UIWebViewDelegate { 
    //contains the imageView and activityWorkingIndicator 
    @IBOutlet weak var splash_view: UIView! 
    @IBOutlet var contentWebView: UIWebView! 
    //Contains the Webview and other views to be displayed after the splash his hidden 
    @IBOutlet weak var splash_view_not: UIView! 

    override func viewWillAppear(animated: Bool) 
    { 
     contentWebView?.scrollView.bounces = false; 
     contentWebView?.delegate = self 
     let url = NSURL(string: "http://localhost/something/"); 
     let request = NSURLRequest(URL: url!); 
     contentWebView?.loadRequest(request); 
    } 

    .... 

    func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool { 
     if let scheme = request.URL?.scheme { 
      if scheme == "myRequestScheme"{ 
       let task : String = (request.URL?.host)!; 
       switch task { 
        case "systemReady": 
         print("checkpoint 1");//works fine 
         splash_view?.hidden = true;//no effect at all 
         splash_view_not?.hidden = false;//no effect at all 
         print("checkpoint 2");//works fine 
         break; 
        default: 
        break 
       } 
      } 
     } 

     return true; 
    } 
} 

ここでは何が欠けていますか?

+0

ご質問のような

使用してのObjective-CやXcodeのとは何の関係もありません。不要なタグは付けないでください。ありがとう、 – rmaddy

答えて

0

自動レイアウトを使用しているようです。そうであれば、.hiddenを使うことはあなたが考えるより多くの意味を持ちます。ビューがすでにロードされた後にメソッド内で呼び出す場合は、非表示の代わりに制約を操作する必要があります。制約アウトレットを作成して、それを隠すためにアクティブにする人もいます。 http://candycode.io/hiding-views-with-auto-layout/

そしてここにあなたの最良の選択肢に関する情報のLOTへとスタックオーバーフローのスレッドです:一部の人々は、私はこれが好ましい方法であると考えてい

など、アルファを設定し、物事を隠すために、フロントにサブビューをもたらしますAutoLayoutでアイテムを非表示にする: AutoLayout with hidden UIViews?

0

メインスレッドのデリゲートメソッドでコントロールを非表示にするか、表示する必要があります。この

DispatchQueue.main.async { 
     splash_view_not?.hidden = false 
} 
関連する問題