iOS - UITableView, отправляющий URL-адрес в UIWebView в другом контроллере представления - PullRequest
2 голосов
/ 04 мая 2011

новичок в этом сайте, но моя голова абсолютно убивает меня после попытки в течение последних нескольких часов исправить то, что, как я знаю, должно быть безумно простым.

Рассказ:

  • У меня есть UIViewController с UINavigationController
  • UIViewController (tableView) - это UITableView, который анализирует и отображает новости RSS-каналов
  • Существует второй UIViewController (newsWebView) с UIWebView, который выдвигается UINavigationController и предназначен для отображения каждой истории, когда пользователь нажимает на строки в tableView
  • Когда пользователь завершает работу с UIWebView, они возвращаются в первое представление tableView

У меня все работает, за исключением отправки URL каждой строки в webView во втором контроллере. Он выдвигает представление, но URL просто не отправляется на второй контроллер, поэтому веб-представление пустое. 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];
    }
}

Итак, что мне нужно добавить к viewDidLoad в newsWebView.m? Или, если на то пошло, что не так с моим табличным представлением didSelectRowAtIndexPath?

newsWebView.m

- (void)viewDidLoad {


    }

Большое спасибо. Мне нужно взять Адвил!

1 Ответ

3 голосов
/ 04 мая 2011

Имейте переменную экземпляра, скажем urlObject типа NSUrl в вашем классе newsWebView. Убедитесь, что вы добавили @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]];
}
...