Frage

Im Moment habe ich den folgenden Code, dass Lasten eine UIWebView von einer anderen Ansicht. Nun ist es trotzdem kann ich eine Schließen-Button hat?

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

}

Ich werde eine Seite laden gebaut mit jQuery Mobile, so dass ein Schließen-Button innerhalb der Seite würde auch funktionieren. Aber auf einer Navigationsleiste wäre ideal. Btw, meine Anwendung funktioniert nicht Haben Sie einen UINavigationBar

War es hilfreich?

Lösung

würde ich eine neue Unterklasse von UIViewController schaffen, sagt WebViewController mit einer Feder. Dann würde ich eine UINavigationBar mit einem Schließen-Schaltfläche und einer UIWebView hinzuzufügen. Dann wird Ihre Web-View-Controller zu zeigen, man kann so etwas tun:

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

In Ihrem WebViewController können Sie festlegen:

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

- (IBAction)close:(id)sender;

und implementieren etwas wie folgt aus:

- (void)viewDidLoad {
  [super viewDidLoad]

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

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

Andere Tipps

Wenn Sie die UIWebView laden, könnten Sie einen JavaScript-Schnipsel auf den Inhalt laufen zuerst.

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

Das Hijacking nur das normale Verhalten von window.close() und gibt Ihnen die Chance den Anruf in Ihrem Objective-C zu fangen.

Dann in Ihrem UIWebViewDelegate könnten Sie hören, was Sie als die enge URL gewählt haben.

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

Ein bisschen hackish, aber es würde die Web-Entwickler erlauben, um das Aussehen zu steuern und das Gefühl der Schließen-Schaltfläche aus dem HTML-Inhalt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top