开发者

Clickable links in UITableView that open up Safari

I am working on an iPhone app, and would like to be able to click on a link that is in UITableView. When the Link, and only the link is selected I want the Safari app to be opened to the selected link. Any suggestions o开发者_JAVA技巧n how to do this? Thanks so much!


There are multiple solutions to your problem.

If the links are the only object in the cell, then you could just make call the didSelectRowAtIndexPath:(NSIndexPath *)indexPath function of UITableView to gather the link from your array of table data, and then use

[[UIApplication sharedApplication] openURL:myURL];

to open the URL.

Alternatively you could create your own UITableCell subclass that contains a custom button (instead of a rounded rect button) that has no image or background (only text) so that it has the appearance of a link (you could even color the text blue, and underline it...). When the user clicks the button, your handler function would then call the same openURL function as above.

The above method works best if you have multiple items in each cell (which is why you would have to create a custom cell...


A naive approach would be to embed a tiny UIWebView into each cell. UIWebView has a delegate that lets you know when a link is clicked which you can implement to launch the Safari or navigate to a new controller hosting a full screen UIWebView.

This approach might be too resource intensive and I haven't tried it myself but if it does work it would offer a lot of flexibility. Would love to know the results if you try it.

To launch a link in safari use:

NSURL *url = [NSURL URLWithString:@"http://stackoverflow.com"];
if (![[UIApplication sharedApplication] openURL:url]) {
    NSLog(@"%@%@", @"Failed to open url:", [url description]);
}


Is the link in its own row in the UITableView? If so, then you can handle it within didSelectRowAtIndexPath when the appropriate row is clicked.

0

上一篇:

下一篇:

精彩评论

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

最新问答

问答排行榜