webview中的后退按钮

时间:2011-09-13 12:52:25

标签: iphone webview

我有一个UITableView,当一个项目被选中时,我加载WebView,如下所示:

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

    NSURL *url=[NSURL URLWithString:[[nameCatalog objectAtIndex:indexPath.row] valueForKey:@"url"]];
    [webView loadRequest:[NSURLRequest requestWithURL:url]];
    [self.view addSubview:webView];
    [webView setHidden:NO];
}

我想要做的是实施BackButton所以当我在网页浏览时,我可以回到UITableView.

所以我这样做了:

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

    NSURL *url=[NSURL URLWithString:[[nameCatalog objectAtIndex:indexPath.row] valueForKey:@"url"]];
    [webView loadRequest:[NSURLRequest requestWithURL:url]];
    [self.view addSubview:webView];
    [webView setHidden:NO];
    UIBarButtonItem *infoButton = [[UIBarButtonItem alloc] 
                                   initWithTitle:@"Done" style:UIBarButtonItemStyleBordered target:self action:@selector(info_clicked:)];

    self.navigationItem.leftBarButtonItem = infoButton;
}

- (void) info_clicked:(id)sender {

    self.navigationItem.leftBarButtonItem = nil;
    [webView removeFromSuperView];
    }

但是当我加载webview时,没有按钮出现。!!!!! 请帮助!

3 个答案:

答案 0 :(得分:1)

可能是因为您要将webview添加为子视图,而不是在堆栈上推送另一个viewController。

此外:后退按钮由视图控制器的标题配置。要将其更改为后退按钮,您需要在按下视图之前在视图中创建后退按钮。我有两个例子:

BackButton.zip,显示了如何在视图控制器的init方法中配置后退按钮。

LoadWebViewTable.zip显示了如何在awakeFromNib方法中配置后退按钮。这个例子我认为你的应用程序更紧密。

重点是后退按钮在视图中配置为返回。此外,这两个示例都使用了无目标操作,因此您甚至不需要回调来从堆栈中弹出视图 - 它是免费的。

答案 1 :(得分:1)

为此,请将Web视图放在不同的视图控制器中并使用

[self.navigationController pushViewController:webViewController animated:YES];

而不是

[self.view addSubview:webView];

答案 2 :(得分:0)

也许你应该在界面中做一些这样的事情。将表视图连接到您的代码。将界面中的按钮连接到IBAction,在启动应用程序时隐藏,然后当用户单击表格视图单元格时,取消隐藏按钮。

希望这有帮助!