iOS - UITableView 将 URL 推送到不同视图控制器中的 UIWebView

Posted

技术标签:

【中文标题】iOS - UITableView 将 URL 推送到不同视图控制器中的 UIWebView【英文标题】:iOS - UITableView Pushing URL to UIWebView in Different View Controller 【发布时间】:2011-05-04 10:44:28 【问题描述】:

刚接触这个网站,但在过去几个小时尝试修复一些我知道必须非常简单的问题后,我的脑袋简直要死了。

短篇小说:

我有一个带有 UINavigationController 的 UIViewController UIViewController (tableView) 是一个 UITableView,用于解析和显示 RSS 提要故事 第二个 UIViewController (newsWebView) 带有一个由 UINavigationController 推送的 UIWebView,用于在用户单击 tableView 中的行时显示每个故事 当用户完成 UIWebView 后,他们会被推回到第一个视图 tableView

除了将每一行的 URL 推送到第二个控制器中的 webView 之外,我一切正常。它推送视图,但 URL 没有发送到第二个控制器,因此 webView 为空白。我在代码中的 NSLogs 也表明 URL 正在创建成功,那么我需要做什么才能让 newsWebView 处理 URL?

tableView.m

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 

    int storyIndex = [indexPath indexAtPosition: [indexPath length] - 1];

    NSString * storyLink = [[stories objectAtIndex: storyIndex] objectForKey: @"link"];

    // clean up the link - get rid of spaces, returns, and tabs...
    storyLink = [storyLink stringByReplacingOccurrencesOfString:@" " withString:@""];
    storyLink = [storyLink stringByReplacingOccurrencesOfString:@"\n" withString:@""];
    storyLink = [storyLink stringByReplacingOccurrencesOfString:@"  " withString:@""];

    NSLog(@"storyLink: %@", storyLink);


    if (storyLink != nil && ![storyLink isEqualToString:@""]) 
        // Wrapping the troublesome call with logs so you should be able to see if this is the line that is killing your app
        NSLog(@"about to create url");
        NSURL *url = [NSURL URLWithString:storyLink];
        NSLog(@"creating url was successful");

        //URL Request Object
        NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];

        //Load the request in the UIWebView
        newsWebView *detailViewController = [[newsWebView alloc] initWithNibName:@"newsDetailWebView" bundle:nil];
        //detailViewController.item = [[stories objectAtIndex: storyIndex] objectForKey: @"link"];
        [self.navigationController pushViewController:detailViewController animated:YES];
        //[detailViewController loadRequest:requestObj];
        [detailViewController release];
    

那么,我需要在 newsWebView.m 中的 viewDidLoad 中添加什么?或者,就此而言,我的 tableView 的 didSelectRowAtIndexPath 有什么问题?

newsWebView.m

- (void)viewDidLoad 


    

非常非常感谢。我需要服用一些Advil!

【问题讨论】:

【参考方案1】:

在您的 newsWebView 类中输入一个实例变量 urlObjectNSUrl。确保添加 @property@synthesize 对象。

然后

newsWebView *detailViewController = [[newsWebView alloc] initWithNibName:@"newsDetailWebView" bundle:nil];
        newsWebview.urlObject = url;
        [self.navigationController pushViewController:detailViewController animated:YES];
        //[detailViewController loadRequest:requestObj];
        [detailViewController release];

在 newsWebView.m 中

- (void)viewDidLoad 
[webView loadRequest:[NSURLRequest requestWithURL:urlObject]];

【讨论】:

谢谢你,7KV7!我意识到它必须如此简单,老实说,发布它时感到有点羞耻,但我知道 SO 社区会很有帮助而且很好! +1

以上是关于iOS - UITableView 将 URL 推送到不同视图控制器中的 UIWebView的主要内容,如果未能解决你的问题,请参考以下文章

将 UITableView 推送到 UITableView

如何将 Json 数据推送到 UITableView 中的标签?

在 iOS 中上推和交换导航栏

通过 segue 问题在 UITableView 和 UIViewController 之间推送数据

如何从 UITableView 推送到新的 viewController?

将子视图添加到 UINavigationBar 时向下推 UITableView