UIWebView不会在ios中显示内容

我一直在围绕一个需要与SplitViewController类似的GUI的小项目进行工作。 现在我所做的是,我有两个UIViewControllers即MasterViewController和DetailViewController作为ViewController的子视图添加代码显示在下面的ViewController.m

- (void)viewDidLoad { UIScreen *screen = [UIScreen mainScreen]; CGRect fullScreenRect = screen.bounds; // always implicitly in Portrait orientation. width = fullScreenRect.size.width; height = fullScreenRect.size.height; detailViewController = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil]; masterViewController = [[[MasterViewController alloc]initWithNibName:@"MasterViewController" bundle:nil] autorelease]; masterViewController.view.frame = CGRectMake(0, 0, 299, height); detailViewController.view.frame = CGRectMake(300, 0, width-300, height); [self.view addSubview:masterViewController.view]; [self.view addSubview:detailViewController.view]; } 

现在在MasterViewController didLoad方法中,我添加了一个子视图MasterTableViewController …

MasterTableViewController类看起来像这样…

  @interface MasterTableViewController : UITableViewController { DetailViewController *detailViewController; } 

所有与UITableViewController相关的function都已经被创build…我还添加了从用户添加URL并将其存储在MasterTableView中的function。 现在在下面的函数中,我试图用必需的string调用DetailViewController的loadWebView函数。 这个呼叫是完美的function。

  - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { NSString *urlString = [_objects objectAtIndex:indexPath.row]; detailViewController = [[DetailViewController alloc]init]; [detailViewController loadWebView:urlString]; } 

在DetailViewController的loadWebView方法中,我有以下的实现。

  -(void) loadWebView: (NSString *) urlToLoad { self.webView = [[[UIWebView alloc] initWithFrame:CGRectMake(0, 45, self.view.frame.size.width, self.view.frame.size.height)] autorelease]; [self.webView setDelegate:self]; NSLog(@"SELF->WEBVIEW: %@",self.webView); NSURL *url = [NSURL URLWithString:urlToLoad]; NSLog(@"loading url %@ %@", urlToLoad, self.webView); NSURLRequest *requestObj = [NSURLRequest requestWithURL:url]; [self.webView loadRequest:requestObj]; } 

我也实现了以下function,以确保我的Webview正在工作..

  - (void)webViewDidStartLoad:(UIWebView *)webView { NSLog(@"webViewDidStartLoad"); } - (void)webViewDidFinishLoad:(UIWebView *)webView { NSLog(@"webViewDidFinishLoad"); } 

现在当我运行我的程序日志打印所有这些东西…

  2012-10-15 20:04:21.621 SyneBlogApp[2320:c07] device width height 768.000000 1024.000000 2012-10-15 20:04:21.630 SyneBlogApp[2320:c07] calling viewDidLoad for detailView 2012-10-15 20:04:21.636 SyneBlogApp[2320:c07] /Users/Library/Application Support/iPhone Simulator/5.1/Applications/B846EDA4-49CF-4DD3-AAB3-FF8BC19C65DA/Documents/Data.plist: 2012-10-15 20:04:22.942 SyneBlogApp[2320:c07] calling viewDidLoad for detailView 2012-10-15 20:04:22.954 SyneBlogApp[2320:c07] SELF>WEBVIEW: <UIWebView: 0x6a94510; frame = (0 45; 768 1004); layer = <CALayer: 0x6a94930>> 2012-10-15 20:04:22.955 SyneBlogApp[2320:c07] loading url http://wordpress.com <UIWebView: 0x6a94510; frame = (0 45; 768 1004); layer = <CALayer: 0x6a94930>> 2012-10-15 20:04:22.994 SyneBlogApp[2320:c07] webViewDidStartLoad 2012-10-15 20:04:26.828 SyneBlogApp[2320:c07] webViewDidFinishLoad 

根据日志我的webview加载数据完美,但是当我看看模拟器我得到一个白色的屏幕。 那是内容没有显示出来…

现在只是为了确保没有什么是错的webview我试着在DetailViewController viewDiDloadMethod下面的工程,并显示了谷歌网页…

  - (void)viewDidLoad { self.webView = [[[UIWebView alloc] initWithFrame:CGRectMake(0, 45, self.view.frame.size.width, self.view.frame.size.height)] autorelease]; NSURL *url = [NSURL URLWithString:@"http://www.google.com"]; NSURLRequest *requestObj = [NSURLRequest requestWithURL:url]; [self.webView loadRequest:requestObj]; [self.view addSubview:self.webView]; [super viewDidLoad]; NSLog(@"calling viewDidLoad for detailView"); } 

现在我真的不知道发生了什么问题。 即使所有的东西在日志里仍然很好地工作,网页内容不会显示出来..如果你有任何线索出现问题,请帮助…

这个…

  detailViewController = [[DetailViewController alloc]init]; 

…创build一个新的DetailViewController而不是使用已经创build的一个,并在显示的第一个代码段中作为显示的一部分。 因此,您正在加载您的Web视图,以查看不在屏幕上的控制器/视图。