2014-02-18 104 views
2

其實我在這裏有兩個相關的問題,關於在UIWebView中加載請求的不同用例。加載隱藏/離線UIWebView

  1. 它是安全的呼籲 - [UIWebView loadRequest:]上插在視圖層次結構和它的隱藏屬性或它的父的一個網絡視圖設置爲YES?
  2. 在沒有插入到視圖層次結構中的Web視圖上調用 - [UIWebView loadRequest:]安全嗎?

特別是我很感興趣,是否被認爲是加載在UIWebView不可見請求一個很好的做法,以及是否曾經請求成功分配到UIWebView實例的代表將被通知/失敗。我問的原因是UIWebView類引用說「創建一個UIWebView對象,將它附加到一個窗口,併發送一個請求來加載網頁內容」,其中告訴UIWebView應該連接到一個窗口的部分使我懷疑上述方法是否可靠。

回答

3

我已成功使用[UIWebView loadRequest:]與不在視圖層次結構中的對象。我期望類參考只是假定視圖將被顯示,因爲它可能是最常見的用例。

+0

預計任何視圖都會顯示在某個點上,問題是開發人員是否應該在UIWebView實例中加載請求,然後顯示它或顯示然後加載。 – DevGansta

+0

如果UIWebView不在視圖層次結構中並且委託方法將像往常一樣被調用,那麼調用加載請求是安全的。調用webViewDidFinishLoad時,可以將UIWebView添加到視圖層次結構中。至於這是否是良好的做法,那取決於你想用你的用戶界面來實現的目標,但我不相信你有什麼理由可以預期這會導致問題。 – mhw

0
  1. 是的,它是安全地調用[UIWebView中的loadRequest:]在一個插入視圖中的Web視圖hierarchy.Because你要使用網絡的view.Also如果你給的網址程序,它就足夠了。

    爲[UIWebView中的loadRequest]下面的代碼是

    NSString *strurl [email protected]"http:www.google.com"; 
    NSURL *url=[NSURL urlWithString:strurl]; 
    NSURLRequest *urlrequest =[NSURLRequest requestWithUrl:url]; 
    [webView loadRequest:urlrequest]; 
    
  2. 即使是安全的呼叫[一個UIWebView的loadRequest:]對未在視圖中插入一個Web視圖hierarchy.Because您可以動態創建通過程序查看並編寫Web視圖的代碼。

+0

在這兩種情況下,您都會感到「很安全」,而無需參考任何文檔或以某種方式爭論。我知道它在實踐中有效,但我更關心這些方法的可靠性。任何未經證實的行爲可能會在某些時候發生變化,而不會通知Apple。如果你能爲你的答案提供任何證據,這將是很好的。 – DevGansta

+0

你想要什麼證明? – user3182143

+0

對文檔的引用,推斷爲什麼它是安全的,來自蘋果工程師的評論,任何東西。 – DevGansta

0

它的工作原理。只要您沒有使用任何私有API並遵循HIG,該方法就完全可靠。只要適合您的要求,這不是一個壞習慣。如果您的UIWebView有一個hidden屬性可用,那麼當然您可以按照您的要求隱藏webView。

關於您的下面的查詢,它根據句子上下文寫入文檔。

我問其原因在於UIWebView的類引用說:「創建一個 的UIWebView對象,將其連接到一個窗口,並將其發送的請求加載 網頁內容」,其中的一部分,告訴一個UIWebView應該是 附上一個窗口讓我懷疑上面的方法是否可靠 。

下面是完整的上下文,這明顯意味着要使用UIWebView在應用程序中顯示網頁,您必須按照上述方式進行操作。

您使用UIWebView類將Web內容嵌入到您的應用程序中。 爲此,您只需創建一個UIWebView對象,將其附加到窗口中,併發送一個加載Web內容的請求。

+0

Web視圖需要插入視圖層次結構中的事實太明顯了,所以我只想加倍,確實不需要窗口來加載內容。到目前爲止它可以工作,但可能會在任何時候停止,沒有任何Apple通知,因爲這些細節沒有記錄。但我同意#1解決方案似乎相當可靠。 – DevGansta

+0

正如你所說,你自己#2的作品,所以我想告訴你可以使用#2,如果它適合你的要求比#1更好。如果蘋果將來會停止#2,那麼我認爲他們肯定會通知我們,就像他們在棄用行爲方面所做的一樣。而且,如果他們在沒有通知的情況下執行此操作,則可以隨時在可用的beta Xcode中進行測試。然後,如果您發現它已停止,請提出錯誤以澄清問題並使用#1修復您的應用。 – san

+0

好的建議,雖然需要監控所有測試版本並重新開始應用程序,如果它停止工作。謝謝! – DevGansta