我正在解析RSS提要并将结果加载到表中。当用户点击故事时,他们将被带到网页。
目前我正在使用:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:story]];
麻烦的是,这会启动Safari并关闭我的应用程序。
有没有办法在我的应用中打开网页呢?我希望网页显示“完成”按钮,关闭网页并将用户返回到桌面。
非常感谢任何帮助(和代码示例)。
答案 0 :(得分:3)
您可以在通过navigationController pushViewController选择器启动的新视图控制器中使用UIWebView,并在“Safari中查看”工具栏项目,该工具栏将启动完整的Safari浏览器(并将您的应用程序置于后台/终止)。
一些示例代码段:
假设: (1)您有一个视图控制器,名为:WebViewController(具有相同的.xib)文件。 (2)该视图控制器有一个UIView,它是主视图的子视图;
@interface WebViewController: UIViewController <UIWebViewDelegate> {
UIWebView *webview;
NSString *someUrlToLoad;
}
@property (nonatomic, retain) IBOutlet UIWebView *webview;
@property (nonatomic, copy) NSString *someUrlToLoad;
在此视图控制器的viewDidLoad方法中:
-(void) viewDidLoad {
[super viewDidLoad];
[webview loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:self.someUrlToLoad]]];
}
当有人点击你的桌面视图中的单元格时加载此控制器:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
WebViewController *viewController = [[WebViewController alloc] initWithNibName:@"WebViewController" bundle:nil];
viewController.someUrlToLoad = <url for this cell>;
[self.navigationController pushViewController:viewController animated:YES];
[viewController release];
}
您很可能希望在UIWebViewDelegate中包含一些钩子,以便在导航栏中停止/显示活动指示器,以便用户知道页面加载时发生了某些事情。