簡體   English   中英

在初始化程序中加載webview內容

[英]load webview content in the initializer

這是一款iPad應用。 按下兩個按鈕之一,它會顯示一個包含webview的模態視圖控制器,該控制器將顯示PDF。 我創建了包含webview的UIViewController類,我想根據用戶推送的按鈕使用2個初始化器中的1個。 當我初始化對象時,我想設置顯示哪個PDF。 模態視圖即將出現,但它是空白的(未顯示PDF)。 但是,當我在 - (void)viewDidLoad {}中使用相同的代碼時,它確實有效。 為什么是這樣? 謝謝!

 - (id)initAsPi{
    NSLog(@"initAsPi Called");
    [super init];
    NSString *urlAddress = [[NSBundle mainBundle] pathForResource:@"PiPdf" ofType:@"pdf"];
    NSURL *url = [NSURL fileURLWithPath:urlAddress];
    NSURLRequest *urlRequestObj = [NSURLRequest requestWithURL:url];
    [prescribingInfoWebView loadRequest:urlRequestObj];
    return self;
    }

執行視圖控制器的init方法時,它尚未加載其視圖。 所以prescribingInfoWebView在這一點上可能是nil (你應該檢查調試器),所以你試圖發送給它的消息沒有任何效果。

初始化

你的初始化方法是錯誤的。 閱讀實現初始化程序 - 處理初始化失敗...

http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/ObjectiveC/Articles/ocAllocInit.html%23//apple_ref/doc/uid/TP30001163-CH22-105377

看起來應該......

- (id)initAsPi {
  self = [super init];
  if ( self ) {
    // Your initialization code
  }
  return self;
}

為什么它在viewDidLoad中工作而不在initAsPi中?

prescribingInfoWebView是零,除非你在其他地方做一些模糊的事情。

您可能正在loadView方法中創建prescribingInfoWebView,或者如果您從XIB加載視圖,它會在視圖加載期間自動初始化。

UIViewControllers懶洋洋地加載它們的接口。 這意味着在Interface Builder或-loadView中設置的任何UI屬性都將為nil,直到對視圖的某些請求導致其加載。 在初始化程序中,這幾乎肯定是問題所在。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM