【问题标题】:How to load web page using didSelectRowAtIndexPath without leaving the app?如何在不离开应用程序的情况下使用 didSelectRowAtIndexPath 加载网页?
【发布时间】:2011-04-20 22:22:30
【问题描述】:

我正在解析 RSS 提要并将结果加载到表格中。当用户点击一个故事时,他们会被带到网页。

目前我正在使用:

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

问题是这会启动 Safari 并关闭我的应用程序。

可以这么说,有没有办法在我的应用中打开网页?我希望网页显示一个“完成”按钮,该按钮关闭网页并将用户返回到表格。

非常感谢任何帮助(和代码示例)。

【问题讨论】:

    标签: iphone uitableview sdk safari webpage


    【解决方案1】:

    您可以在通过 navigationController pushViewController 选择器启动的新视图控制器中使用 UIWebView,并有一个“在 Safari 中查看”的工具栏项目,它将启动完整的 Safari 浏览器(并将您的应用程序置于后台/终止)。

    一些示例代码sn-ps:

    假设: (1) 您有一个名为:WebViewController (with same .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 中包含一些挂钩,以在导航栏中停止/显示活动指示器,以便用户在页面加载时知道正在发生的事情。

    【讨论】:

    • 谢谢chilitechno。我是一个新手,所以你的建议有点混乱。这会在新的 NIB 中切换,还是创建一个覆盖表格的子视图?我只需要显示一个网页(表格中的每一行一个),所以我不需要 Safari 的全部功能。您有机会发布一些示例代码吗?非常感谢。
    • 用一些示例 sn-ps 更新了答案。我建议使用内容加载一个新的视图控制器,以便用户在查看完网页内容后可以点击返回按钮。
    • 小心你在应用的 webview 中显示的内容。您可以显示的内容有一些限制。例如:您必须在 Safari 应用程序本身中显示任何类型的“捐赠”页面,使用您列出的 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:story]]; 函数。您可能不必担心 - 但只要知道这有一些限制
    猜你喜欢
    • 1970-01-01
    • 2010-12-28
    • 2010-10-06
    • 1970-01-01
    • 2019-08-17
    • 1970-01-01
    • 2021-04-27
    • 2019-01-07
    • 1970-01-01
    相关资源
    最近更新 更多