开发者

How to load web page using didSelectRowAtIndexPath without leaving the app?

开发者 https://www.devze.com 2023-02-27 22:01 出处:网络
I am parsing RSS feeds and loading results into a table.When the user clicks on a story, they are taken to the web page.

I am parsing RSS feeds and loading results into a table. When the user clicks on a story, they are taken to the web page.

At the moment I am using:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:story]];

Trouble is that this launches Safari and closes my app.

Is there a way to ope开发者_运维技巧n the webpage in my app so to speak? I'd like the webpage to appear with a "Done" button that closes the web page and returns the user back to the table.

Any help (and code examples) are much appreciated.


You can use UIWebView in a new view controller launched via navigationController pushViewController selector, and have a toolbar item to "View in Safari" which will launch full Safari browser (and putting your app in the background/terminating).

Some example code snippets:

Assumptions: (1) You have a view controller entitled: WebViewController (with same .xib) file. (2) This view controller has a UIView which is subview of the main view;

@interface WebViewController: UIViewController <UIWebViewDelegate> {
    UIWebView *webview;
    NSString *someUrlToLoad;
}

@property (nonatomic, retain) IBOutlet UIWebView *webview;
@property (nonatomic, copy) NSString *someUrlToLoad;

In this view controller's viewDidLoad method:

-(void) viewDidLoad {
    [super viewDidLoad];
    [webview loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:self.someUrlToLoad]]];
}

You load this controller when someone clicked on the cell in your tableview:

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

}

Most likely you will want to include some hook into the UIWebViewDelegate to stop/show an activity indicator in the navigation bar so the user is aware that something is happening while the page loads.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号