最近手誤,犯了一個錯誤,測試後發現這有趣的問題,分享出來讓大家可以更了解xib的功能。
以下是swift的程式碼。
我在xib上拉了一個UIWebView,都設定好位置後,我因為沒有設定IBOutlet的緣故,以為還要自己初始化,就在viewDidLoad裡面又初始化了一次:
self.webView = UIWebView()
這時候,我就把self.webView原本指向的xib幫我初始化好的UIWebView的記憶體位址給改變了,self.webView這時指向我初始化的UIWebView物件。
之後我設定了文字:
self.webContentView.loadHTMLString("XXXXX", , baseURL: nil)
結果跑出來當然是空白一片,我還想發生什麼事情了,後來才想通,因為字串會被載入到我設定的UIWebView的記憶體位置上,而不是xib設定的記憶體位址,所以我設定了位置並加入看看是不是如我所想:
self.webView.frame = CGRectMake(0, 0, 300, 100)
self.view.addSubview(self.webView)
這樣跑出來的結果是,的確畫面上方出現了我要的結果,原來的xib上拉好的UIWebView空白一片,所以xib的確會幫你初始化好元件的記憶體位址,你自己再這樣去設定的話,只會造成不可預期的結果。
以下是swift的程式碼。
我在xib上拉了一個UIWebView,都設定好位置後,我因為沒有設定IBOutlet的緣故,以為還要自己初始化,就在viewDidLoad裡面又初始化了一次:
self.webView = UIWebView()
這時候,我就把self.webView原本指向的xib幫我初始化好的UIWebView的記憶體位址給改變了,self.webView這時指向我初始化的UIWebView物件。
之後我設定了文字:
self.webContentView.loadHTMLString("XXXXX", , baseURL: nil)
結果跑出來當然是空白一片,我還想發生什麼事情了,後來才想通,因為字串會被載入到我設定的UIWebView的記憶體位置上,而不是xib設定的記憶體位址,所以我設定了位置並加入看看是不是如我所想:
self.webView.frame = CGRectMake(0, 0, 300, 100)
self.view.addSubview(self.webView)
這樣跑出來的結果是,的確畫面上方出現了我要的結果,原來的xib上拉好的UIWebView空白一片,所以xib的確會幫你初始化好元件的記憶體位址,你自己再這樣去設定的話,只會造成不可預期的結果。
留言
張貼留言