我必須在表單之前包含一些「富文本」說明;並認爲將UIWebView添加到tableview的標題將工作。 HTML是我資源文件夾中的一個小文件,CSS位於文件中的樣式標記中;所以這一切都很好,自我包容。如何防止延遲顯示我的UIWebView
問題是,視圖過渡;那麼在稍微延遲之後,webview的內容就會出現。效果震撼,我不認爲隱藏視圖並在其準備就緒的時候將視圖隱藏起來更加可取。
我用下面的代碼創建視圖,在我的viewDidLoad
方法中。
UIWebView * wv = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, self.tableView.frame.size.width, HEADER_HEIGHT)];
[wv setBackgroundColor:[UIColor clearColor]];
[wv setOpaque:NO];
NSString *path = [[NSBundle mainBundle] pathForResource:@"HeaderMsg" ofType:@"html"];
assert(path != nil);
NSData *htmlData = [NSData dataWithContentsOfFile:path];
[wv loadData:htmlData MIMEType:@"text/html" textEncodingName:@"utf-8" baseURL:nil];
[self.tableView setTableHeaderView:wv];
[wv release];
我發現了2個醜陋的解決方法,但我希望有人有更好的解決方案;因爲我的解決方法做一個真正惹出來的代碼:
在先前的畫面時,你的 UIMYSCREENViewController,呼叫
[vc preloadWebViewWithDelegate:self];
方法將使用調用作爲委託進行的WebView 。 調用者然後保留該vc和 等待webview發送它一個webviewDidFinishLoad
方法,在 哪一次它可以呈現視圖 並釋放vc。調用視圖可以使webview, 等待它完成,然後創建 新視圖並將webview傳遞給它。
無論如何,這兩個「解決方案」讓我有點g咽,所以我希望別人找到更好的方法。 (*該說明大多是簡單的,帶有一些項目符號(沒有圖像或過分積極的樣式)的風格文本;但它需要大約14個仔細對齊的UILabel視圖才能在沒有webview的情況下進行模擬 - 並且受到客戶想要更改消息。)
這是我的選擇#2,什麼碼目前並。將預加載延遲從「操作」移出並進入應用程序啓動狀態是一種很好的方式。不幸的是,當我展示這個觀點時,這是用戶會看到的第一個 - 所以我不需要將webview預加載遠離使用它的視圖。我仍然希望有人會推薦一個更清潔的解決方案,但我傾注了文檔,並懷疑沒有。 – Dave 2011-02-27 23:19:25
我想過使用performSelector:withObject:afterDelay在我初始化後顯示〜700ms的視圖。至少在那時我沒有代碼遍佈各地的視圖。如果明天沒有人有更好的解決方案;我會接受你的回答。 – Dave 2011-02-27 23:19:59