2010-11-27 30 views
4

我目前有以下代碼從另一個視圖加載UIWebView。無論如何,我可以有一個關閉按鈕?如何使用頂部的關閉按鈕加載UIWebView?

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 

    UIWebView *webView=[[UIWebView alloc] initWithFrame:CGRectMake(0,0,320,480)]; 
    [self.view addSubview:webView]; 
    NSURLRequest *urlRequest; 
    NSURL *urlforWebView; 
    urlforWebView=[NSURL URLWithString:@"http://www.google.com"]; 
    urlRequest=[NSURLRequest requestWithURL:urlforWebView]; 
    [webView loadRequest:urlRequest]; 

} 

我打算加載使用jquery mobile構建的頁面,因此頁面內的關閉按鈕也可以正常工作。但在導航欄上將是理想的。順便說一句,我的應用程序有UINavigationBar的

回答

10

我將創建一個新的子類的UIViewController,說WebViewController用筆尖。然後我會添加一個關閉按鈕UINavigationBar和一個UIWebView。然後,以顯示你的Web視圖控制器,你可以這樣做:

WebViewController *webViewController = [[WebViewController alloc] init]; 
webViewController.loadURL = [NSURL URLWithString:@"http://www.google.com"]; 
[self presentModalViewController:webViewController animated:YES]; 
[webViewController release]; 

在你WebViewController您可以定義:

@property (nonatomic, retain) IBOutlet UIWebView *webView; 
@property (nonatomic, retain) NSURL *loadURL; 

- (IBAction)close:(id)sender; 

和實施這樣的:只要您裝入

- (void)viewDidLoad { 
    [super viewDidLoad] 

    NSURLRequest *urlRequest = [NSURLRequest requestWithURL:self.loadURL]; 
    [self.webView loadRequest:urlRequest]; 
} 

- (IBAction)close:(id)sender { 
    [self dismissModalViewControllerAnimated:YES]; 
} 
+0

非常感謝。這幫助了我。 – gk1 2010-11-27 20:09:32

+0

我收到[super viewDidLoad]的錯誤。你是否創建了WebViewController作爲一個新類並放置了一個UIView或NSObject的父類? – 2013-12-01 09:36:18

5

UIWebView,你可以先在內容上運行一個javascript代碼片段。

[webView stringByEvaluatingJavaScriptFromString:@"window.close = function() { window.location = 'app://close-webview'; };"]; 

這只是劫持的window.close()正常的行爲,並讓您有機會趕上你的Objective-C的呼叫。

然後在您的UIWebViewDelegate中,您可以聽取您選擇的任何關閉網址。

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { 
    if([request.URL.absoluteString isEqualToString:@"app://close-webview"]) { 
     webView.hidden = YES; 
     // or whatever you want to do to remove the UIWebView... 
     return NO; 
    } 
    return YES; 
} 

有點駭人聽聞,但它可以讓網頁開發人員從HTML內容中控制關閉按鈕的外觀和感覺。

相關問題