2011-09-13 99 views
1

我有一个UITableView,当一个项目被选中我加载WebView这样的:后退按钮在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没有出现按钮。 !!!!! 请帮忙!

回答

1

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

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

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

LoadWebViewTable.zip它显示了如何在awakeFromNib方法中配置后退按钮。这个例子更贴近我的想法。

重点在于后退按钮在返回的视图中进行配置。而且,这两个示例都使用无目标操作,因此您甚至不需要回调即可将视图从堆栈中弹出 - 这是免费的。

1

为了做到这一点,把Web视图在不同的视图控制器,并使用

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

,而不是

[self.view addSubview:webView];

+0

该按钮仍然不会出现 – adrian

0

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

希望这有助于!