Search code examples
iosobjective-crssrss-reader

WebView in rss feed not working


Hello I am creating Rss Feeder in Xcode and my web view not working why is not working?

APPMasterViewController

 - (void)viewDidLoad {
        [super viewDidLoad];
        feeds = [[NSMutableArray alloc] init];
        NSURL *url1 = [NSURL URLWithString:@"http://raphaelsebban.com/feed/"];
        parser = [[NSXMLParser alloc] initWithContentsOfURL:url1];

        [parser setDelegate:self];
        [parser setShouldResolveExternalEntities:NO];
        [parser parse];
  }

    - (UITableViewCell *)tableView:(UITableView *)tableView 
                         cellForRowAtIndexPath:(NSIndexPath *)indexPath    
  {
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
    cell.textLabel.text = [[feeds objectAtIndex:indexPath.row] objectForKey: @"title"];
    return cell;
}

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName 
        namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName 
        attributes:(NSDictionary *)attributeDict {

    element = elementName;        
    if ([element isEqualToString:@"item"]) {

        item    = [[NSMutableDictionary alloc] init];
        title   = [[NSMutableString alloc] init];
        url   = [[NSMutableString alloc] init];

    }        
 }

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName 
        namespaceURI:(NSString *)namespaceURI 
        qualifiedName:(NSString *)qName {

    if ([elementName isEqualToString:@"item"]) {

        [item setObject:title forKey:@"title"];
        [item setObject:url forKey:@"link"];            
        [feeds addObject:[item copy]];

    }

}

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {

    if ([element isEqualToString:@"title"]) {
        [title appendString:string];
    } else if ([element isEqualToString:@"link"]) {
        [url stringByAppendingString:string];
    }        
}

    - (void)parserDidEndDocument:(NSXMLParser *)parser {            
        [self.tableView reloadData];            
    }

    - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
        if ([[segue identifier] isEqualToString:@"ShowDetail"]) {                
            NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
            NSString *string = [feeds[indexPath.row] objectForKey: @"link"];
            [[segue destinationViewController] setUrl:string];                
        }
    }

APPDetailViewController

- (void)viewDidLoad {
    [ super viewDidLoad];
     NSURL *myURL = [NSURL URLWithString: [self.url stringByAddingPercentEscapesUsingEncoding:                                           NSUTF16StringEncoding]];
     NSURLRequest *request = [NSURLRequest requestWithURL:myURL];
    [self.webView loadRequest:request];        
    [self webViewDidFinishLoad:_webView];
   }


-(void)webViewDidFinishLoad:(UIWebView *)webView {    
   NSLog(@"method was called");    
}

This is my log :

>2015-08-05 09:10:51.810 #raph[4226:436663] method was called

It seems not working and my webView remains white color


Solution

  • finally its work! Do not forget to create IBOutlet before .

    Good luck!

    this my code:

    APPMasterViewcontroller

        - (void)viewDidLoad {
        [super viewDidLoad];
        feeds = [[NSMutableArray alloc] init];
        NSURL *rssUrl = [NSURL URLWithString:@"yourlink/feed/"]; 
        parser = [[NSXMLParser alloc] initWithContentsOfURL:rssUrl];
    
        [parser setDelegate:self];
        [parser setShouldResolveExternalEntities:NO];
        [parser parse];
    }
    
    - (void)didReceiveMemoryWarning
    {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
    }
    
    #pragma mark - Table View
    
    - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
        return 1;
    }
    
    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
        return feeds.count;
    }
    
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
        cell.textLabel.text = [[feeds objectAtIndex:indexPath.row] objectForKey: @"title"];
        return cell;
    }
    
    - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict {
    
        element = elementName;
    
        if ([element isEqualToString:@"item"]) {
    
            item    = [[NSMutableDictionary alloc] init];
            title   = [[NSMutableString alloc] init];
            url   = [[NSMutableString alloc] init];
    
        }
    
    }
    
    - (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {
    
        if ([elementName isEqualToString:@"item"]) {
    
            [item setObject:title forKey:@"title"];
            [item setObject:url forKey:@"link"];
    
            [feeds addObject:[item copy]];
    
        }
    
    }
    
    - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
    
        if ([element isEqualToString:@"title"]) {
            [title appendString:string];
        } else if ([element isEqualToString:@"link"]) {
            [url appendString:string];
        }
    
    }
    
    - (void)parserDidEndDocument:(NSXMLParser *)parser {
    
        [self.tableView reloadData];
    
    }
    
    - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
        //if ([[segue identifier] isEqualToString:@"showDetail"]) {
    
            NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
    
            NSString *string = [feeds[indexPath.row] objectForKey: @"link"];
    
            [[segue destinationViewController] setUrl:string];
        //}
    }
    
    
    **APPDetailViewController**
    
    - (void)viewDidLoad {
            [super viewDidLoad];
            NSURL *myURL = [NSURL URLWithString: [self.url stringByAddingPercentEscapesUsingEncoding:                                           NSUTF16StringEncoding]];
            NSString *urlString=[self.url stringByReplacingOccurrencesOfString:@"\n\t\t" withString:@""];
            myURL =[NSURL URLWithString:urlString];
            NSLog(@"url=%@",urlString);
    
            NSURLRequest *request = [NSURLRequest requestWithURL:myURL];
            [self.webView loadRequest:request];
        }