2012-10-15 53 views
-1

我一直在努力圍繞這需要一個類似的GUI作爲SplitViewController的一個小項目。現在我所做的是,我有兩個UIViewControllers即MasterViewController和DetailViewController其中添加作爲視圖控制器 的子視圖的代碼如下所示ViewController.mUIWebView中不顯示在IOS內容

- (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的功能已經由一個... d我還添加了從用戶添加URL並將其存儲在MasterTableView中的功能。 現在在下面的函數中,我試圖用必需的字符串調用DetailViewController的loadWebView函數。該呼叫完成了該功能。

- (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]; 
} 

我也實施了以下功能只是爲了確保我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"); 
    } 

現在我真的不知道發生了什麼問題。即便所有的東西都在日誌以及工作了之後還是網頁內容,不顯示了..夥計們,如果你有什麼錯誤,請幫助的任何線索......

回答

1

這...

detailViewController = [[DetailViewController alloc]init]; 

...創建一個新的DetailViewController而不是使用您已經創建並在第一代碼段,你表現出了你的顯示器的組成部分之一。因此,您正在加載Web視圖以查看不在屏幕上的控制器/視圖。

+0

感謝飛利浦的答覆,但如果我省略該行,然後我將如何獲得訪問[detailViewController loadWebView:urlString]功能。我想你說什麼,但因爲DetailViewController對象在ViewController.m創建,它在MasterTableViewController.m返回nil,因爲我只聲明DetailViewcontroller * detailviewController在MasterTableViewController.h文件..所以我如何可以訪問那是DetailViewController對象在ViewController.m中創建 – AMUL

+0

在MasterTableViewController中,使'detailviewController'成爲一個屬性而不是一個實例變量。然後,在創建主設備和細節的地方,設置'masterViewController.detailViewController = detailViewController;'。 –

+0

@ philip-是的,我做到了,但它仍然返回null,任何其他選項 – AMUL