UIWebView не загружает URL, когда URL передается из UITableView - PullRequest
1 голос
/ 17 марта 2010

Итак, я встраиваю webView в свое приложение, чтобы показать содержимое URL, который я передаю из выделения в UITableView. Я знаю, что UIWebView правильно загружает контент, потому что, если вы жестко написали код, скажем http://www.google.ca, в NSURL, то он загрузится нормально, однако, когда я передаю URL-адрес, который я проанализировал из RSS-канала, из полученного UITableView ' загрузить URL правильно. Я попытался отладчик, и URL-адрес выходит как ноль, прежде чем я попытаюсь проанализировать его, однако я могу использовать NSLog для вывода значения его на консоль.

вот код в моем UIViewController, который имеет мой UIWebView

 #import <UIKit/UIKit.h>


@interface ReadFeedWebViewController : UIViewController 
{
    NSString *urlToGet;
    IBOutlet UIWebView *webView;
}

@property(nonatomic, retain) IBOutlet UIWebView *webView;
@property(nonatomic, retain) NSString *urlToGet;

@end

Вот код для моей реализации метода viewDidLoad ...

// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad 
{
    [super viewDidLoad];

    NSLog(@"Url inside Web View Controller - %@", urlToGet);
    NSURL *url = [NSURL URLWithString:urlToGet];

    NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];

    [self.webView loadRequest:requestObj];
}

Еще раз, я могу напечатать URL-адрес в NSLog нормально, и если я жестко закодирую URL-адрес в объект NSURL, то он прекрасно загрузится в UIWebView. Вот где я устанавливаю значение в моем UITableViewController ...

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{   
    ReadFeedWebViewController *extendedView = [[ReadFeedWebViewController alloc] init];

    int storyIndex = [indexPath indexAtPosition: [indexPath length] - 1];
    extendedView.urlToGet = [[stories objectAtIndex: storyIndex] objectForKey:@"link"];
    //NSLog([[stories objectAtIndex: storyIndex] objectForKey:@"summary"]);
    NSLog([[stories objectAtIndex: storyIndex] objectForKey:@"link"]);

    [self.navigationController pushViewController:extendedView animated:YES];

    [extendedView release];
}

Однако, поскольку я могу напечатать значение с помощью NSLog в контроллере представления extendedView, я знаю, что оно передается правильно. Приветствия

Ответы [ 3 ]

5 голосов
/ 17 марта 2010

urlToGet является пустым в вашем ReadFeedWebViewController в методе viewDidLoad, потому что при вызове этого метода эта переменная еще не затрагивается.ViewDidLoad - это вызов, когда инициализация ViewController завершена.Я должен вам вызвать его в методе viewWillAppear следующим образом:

- (void)viewWillAppear:(BOOL)animated {
    NSURL *url = [NSURL URLWithString:urlToGet];

    NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];

    [self.webView loadRequest:requestObj];
}
1 голос
/ 17 марта 2010

Кроме того, в вашем коде есть утечка памяти. Вы должны отпустить extendedView после нажатия на навигационный контроллер.

ReadFeedWebViewController *extendedView = [ReadFeedWebViewController new];
if (extendedView != nil) {
    ... setup extendedView here ...
    [self.navigationController pushViewController:extendedView animated:YES];
    [extendedView release];
}
0 голосов
/ 29 января 2013
Try this
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalCacheData
                                        timeoutInterval:20.0];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...