繁体   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