如何在 iOS 中从 webview 返回到 rootview?

Posted

技术标签:

【中文标题】如何在 iOS 中从 webview 返回到 rootview?【英文标题】:How to return from webview to rootview in iOS? 【发布时间】:2012-03-25 08:55:25 【问题描述】:

我是 ios 和 Objective C 编程世界的新手。我正在尝试创建一个应用程序来扫描条形码,然后使用该数据访问网站。

现在,唯一的问题是当我使用 webview 加载网站时,我不知道如何返回到 mainview/rootview。因为,我已经把它做成了一个基于视图的应用程序,我不知道如何实现导航控制器或者只是一个后退按钮。

我用过这个SDK:http://zbar.sourceforge.net/iphone/sdkdoc/

代码:

- (void) imagePickerController: (UIImagePickerController*) reader
 didFinishPickingMediaWithInfo: (NSDictionary*) info

    // ADD: get the decode results
    id<NSFastEnumeration> results =
    [info objectForKey: ZBarReaderControllerResults];
    ZBarSymbol *symbol = nil;
    for(symbol in results)
        // EXAMPLE: just grab the first barcode
        break;
    // EXAMPLE: do something useful with the barcode data
    resultText.text = symbol.data;

    CGRect webFrame = CGRectMake(0.0, 0.0, 320.0, 460.0);
    UIWebView *webView= [[UIWebView alloc] initWithFrame:webFrame];
    [webView setBackgroundColor:[UIColor whiteColor]];
    NSString *urlAddress= @"http://www.flipkart.com/search/a/books?query=";
    urlAddress =[urlAddress stringByAppendingString:resultText.text];
    NSURL *url= [NSURL URLWithString:urlAddress];
    NSURLRequest *requestObj= [NSURLRequest requestWithURL:url];
    [webView loadRequest:requestObj];
    [self.view addSubview:webView];
//    [webView release];

/*    


    // ADD: dismiss the controller (NB dismiss from the *reader*!)
    [reader dismissModalViewControllerAnimated: YES]; 

如何在 webview 中添加后退按钮以便返回主视图?

【问题讨论】:

为什么不能在导航栏上添加返回按钮?还是特定于要求? 如果你使用navigationcontroller你必须调用:[self.navigationController popToRootViewControllerAnimated:YES]; 如何实现导航栏,在webview中 如果你使用 navigationController 你可以在界面生成器中设置属性或者你可以在代码中显示它:[[self navigationController] setNavigationBarHidden:NO animated:YES]; 如何在webview中实现导航栏,请告诉我怎么做? 【参考方案1】:

这里有如何使用 UIWebView 实现工具栏的教程:

http://iosdeveloperzone.com/2011/05/21/tutorial-building-a-web-browser-with-uiwebview-part-1/

【讨论】:

Milo widziec ze jestes aktywny brahu :) 干得好 +1 :) Dzięki, a tak jakoś ostatnio pomagałem ludziom z nudów i zaczalem prowadzic bloga o ios, bo bardzo malo materialow jest po polsku ;)【参考方案2】:

您不必实现导航栏。 您已经创建了一个包含您的UIWebViewUIViewController,然后您必须通过调用[self.navigationController pushViewController:yourVC animated:YES]; 将此控制器放入您当前的UINavigationCotroller 的堆栈中,然后正如@mientus 所说,调用[self.navigationController popToRootViewControllerAnimated:YES]; 以返回根视图控制器。 所以在这种情况下,我建议你开始一个新的 Master-Detail Application 项目。

如果您不想这样做,在您的情况下,只需为您的 webView 设置一个标签并添加一个 UIButton ,其操作如下:

-(IBAction)removeWebView:(id)sender
  [[self.view viewWithTag:yourWebViewTAG] removeFromSuperView];

【讨论】:

在我编写的上述代码中,我将如何向我在 ViewController 中创建的 webview 添加标签,以及如何以编程方式在 webView 中添加后退按钮,然后使用您的 removeWebView 方法。请说我需要做什么编辑,ViewController.m的完整代码cl.ly/FJ0R

以上是关于如何在 iOS 中从 webview 返回到 rootview?的主要内容,如果未能解决你的问题,请参考以下文章

我如何在反应原生 webview 中从网页访问当前位置

如何在 Swift 中从 NSData 显示 PDF - 如何将 PDF 保存到文档文件夹 Swift - 如何在 Swift 中通过 WebView 从保存的 NSData 显示 PDF

在 Swift 中从 WebView 打开条码扫描器

在webview中单击按钮后,如何在android应用程序中从webview打开外部应用程序?

在 Flutter Web 中从 JS 调用 Dart 方法

在 Chrome 自定义选项卡中从 WebView 打开链接时获取 ANR 对话框。我该如何调试?