UITableView推送到URL帮助

时间:2011-08-08 04:11:41

标签: uitableview push nsurl

我正在尝试推送到新视图并在该视图中向webview发送网址,但它没有获取网址请求。 storyLink是在早些时候声明的,但即使我尝试请求http://www.google.com它也不起作用,所以我知道问题是由于某种原因它不接受url。

DetailViewController *newviewController=[[[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil]autorelease];
            NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:storyLink]];
            [newviewController.rssview loadRequest:request];
            [self.navigationController pushViewController:newviewController animated:YES];

1 个答案:

答案 0 :(得分:0)

最好在NSURL的下一个视图中声明一个属性,并从父视图设置值。

例如,在DetailViewController.h文件中设置以下代码

    @interface DetailViewController : UIViewController
    {
            NSURL *request;
    }
    @property (nonatomic, assign) NSURL *request;

在DetailViewController.m文件中......        @synthesize请求;

并修改您当前的代码,如下所示......

    DetailViewController *newviewController=[[[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil]autorelease];
    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:storyLink]];
    newviewController.request = request;
    //[newviewController.rssview loadRequest:request];
    [self.navigationController pushViewController:newviewController animated:YES];  

参考您的代码......:

以下是您必须在代码中修改的一些遗漏内容,它将开始正常工作。

  1. 为UIWebview控件设置委托。

    self.rssview.delegate = self;
    [self.rssview loadRequest:self.request]; 
    
  2. 在DetailViewController.h中,修改以下行。

    @interface DetailViewController : UIViewController <UIWebViewDelegate>
    {
        IBOutlet UIWebView *rssview;
        NSURLRequest *request;
    }
    @property(nonatomic, retain, readonly)UIWebView *rssview;
    @property (nonatomic, assign) NSURLRequest *request;
    @end
    
  3. 在DetailViewController.m中添加UIWebview的委托方法,如下所示...

    - (BOOL)webView:(UIWebView *)myWebView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
    {
        return YES;
    }
    
  4. 替换

    中的以下代码
    - (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:@""];
        storyLink = [storyLink stringByAddingPercentEscapesUsingEncoding: NSStringEncodingConversionAllowLossy];
        NSLog(@"link: %@", storyLink);
        if(indexPath.row==0)
        {       
            DetailViewController *newviewController=[[[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil]autorelease];
            NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:storyLink]];
            //[newviewController.rssview loadRequest:request];
            newviewController.request = request;
            [self.navigationController pushViewController:newviewController animated:YES];
        }
        else 
        {   
            DetailViewController *newviewController=[[[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil]autorelease];
            NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:storyLink]];
            //[newviewController.rssview loadRequest:request];
            newviewController.request = request;
            [self.navigationController pushViewController:newviewController animated:YES];
        }
    }