Iphone UIWebView没有';我好像没有在加载页面

Iphone UIWebView没有';我好像没有在加载页面,iphone,objective-c,uiwebview,Iphone,Objective C,Uiwebview,我有一个基于导航控制器的应用程序,可以下载RSS提要并在TableView中显示项目标题。那部分有效。单击文章标题时,我想将FeedArticleController的实例推送到导航堆栈上。FeedArticleController loadView方法设置视图(因为我想学习如何以编程方式而不是使用IB)。以下是loadView: - (void)loadView { UIView *view = [[UIView alloc] init]; self.view = view;

我有一个基于导航控制器的应用程序,可以下载RSS提要并在TableView中显示项目标题。那部分有效。单击文章标题时,我想将FeedArticleController的实例推送到导航堆栈上。FeedArticleController loadView方法设置视图(因为我想学习如何以编程方式而不是使用IB)。以下是loadView:

- (void)loadView {
    UIView *view = [[UIView alloc] init];
    self.view = view;

    webView = [[UIWebView alloc] initWithFrame:self.view.bounds];
    webView.delegate = self;

    [view addSubview:webView];
}
这有意义吗? 现在,为了让webView实际加载页面,我有以下viewDiDLoad方法:

- (void)viewDidLoad {
    [super viewDidLoad];
    [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com"]]]; 
}
还有委托方法webViewDidStartLoad和webViewDidFinishLoad。他们只是打印到NSLog

我在构建和添加视图的过程中是否遗漏了什么?委托方法似乎在延迟后打印到日志中,当webView被实例化时,在线上有流量。所以,我认为它正在加载页面,但没有被显示


谢谢各位。

这里有两件事需要研究:

  • 将web视图的
    autoresizingMask
    设置为
    UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight
    ,以便在调整其父视图的大小时调整web视图的大小。这是因为默认情况下,您创建的父UIView和UIWebView都有零帧(0,0,0,0)。通过设置此选项,当在屏幕上显示之前调整父视图的大小时,web视图的大小将相应调整
  • 不要使用单独的UIView实例,只需将self.view设置为UIWebView实例
  • 我推荐第二种选择,除非你真的需要在你的控制器里有另一个视图。另外,我应该在这里指出,您在上面的代码片段中泄漏了UIView和UIWebView。这可能会简化,但如果不是这样,您应该在分配视图后释放它们。下面是实施上述解决方案2的示例:

    - (void) loadView
    {
        webView = [[UIWebView alloc] initWithFrame:self.view.bounds];
        webView.delegate = self;    // weak reference: doesn't retain self
        self.view = webView;        // strong reference: retains webView
        [webView release];          // release initial reference: now 'owned' through self.view
    }
    

    谢谢你的评论。我并不总是确定是应该在生成实例的方法中还是在类的dealoc方法中释放实例。