Добавление индикатора активности в веб-просмотр - PullRequest
0 голосов
/ 19 мая 2011

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

@implementation MenuAndWineListViewController

NSDictionary *dict;

UIAlertView * errorAlert;

- (void)viewDidLoad 
{
    self.title=@"Menu & WineList";  
}


- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
}


- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];

    activityIndicator1 = [[[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray]autorelease];

    activityIndicator1.frame=CGRectMake(0.0,0.0, 40.0, 40.0);

    activityIndicator1.center=self.view.center;

    [self.view addSubview:activityIndicator1];

    NSURL *baseURL=[[NSURL 

    URLWithString:@"http://www.riverstonechophouse.com.php5-22.dfw1-2.websitetestlink.com /?feedpages&max=0&sort_order=ASC&parent=12&child_of=12"]retain];

    NSURLRequest *request = [NSURLRequest requestWithURL:baseURL cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];

    connection1=[[[NSURLConnection alloc] initWithRequest:request delegate:self] autorelease];

    if ([stories count] == 0) {

        path = @"http://www.riverstonechophouse.com.php5-22.dfw1-2.websitetestlink.com/?feedpages&max=0&

        sort_order=ASC&parent=180&child_of=180";

        [self parseXMLFileAtURL:path];
    }

    [menuAndWineListViewController loadHTMLString:[dict objectForKey:@"description"]  baseURL:nil];

    [menuAndWineListViewController setClipsToBounds:YES];

     menuAndWineListViewController.opaque=NO;

     menuAndWineListViewController.backgroundColor=[UIColor clearColor];

    [menuAndWineListViewController setDelegate:self];
}


- (void)webViewDidStartLoad:(UIWebView *)webView
{
    [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];
}


- (void)webViewDidFinishLoad:(UIWebView *)webView 
{
    [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];
}


- (void)parserDidStartDocument:(NSXMLParser *)parser
{   
    NSLog(@"found file and started parsing");   
}

- (void)parseXMLFileAtURL:(NSString *)URL
{   
    stories = [[NSMutableArray alloc] init];

    NSURL *xmlURL = [NSURL URLWithString:URL];

    rssParser = [[NSXMLParser alloc] initWithContentsOfURL:xmlURL];

    [rssParser setDelegate:self];

    [rssParser setShouldProcessNamespaces:NO];

    [rssParser setShouldReportNamespacePrefixes:NO];

    [rssParser setShouldResolveExternalEntities:NO];

    [rssParser parse];
}


- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI: (NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{           
    currentElement = [elementName copy];

    if ([elementName isEqualToString:@"item"]) 
    {
        item = [[NSMutableDictionary alloc] init];

        currentTitle = [[NSMutableString alloc] init];

        currentSummary = [[NSMutableString alloc] init];
    }
}


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

    if ([elementName isEqualToString:@"item"]) 
    {
        [item setObject:currentTitle forKey:@"title"];
        [item setObject:currentSummary forKey:@"description"];
        [stories addObject:[item copy]];
    }

    for (i=0 ; i<stories.count;i++) 
    {
        dict = [stories objectAtIndex:i];
    }
}


- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{   
    if ([currentElement isEqualToString:@"title"]) 
    {
        [currentTitle appendString:string];
    }

    else if ([currentElement isEqualToString:@"description"]) 
    {
        [currentSummary appendString:string];
    } 
}


- (void)parserDidEndDocument:(NSXMLParser *)parser 
{
    [activityIndicator1 stopAnimating];

    [activityIndicator1 removeFromSuperview];

    NSLog(@"stories array has %d items", [stories count]);
}

1 Ответ

1 голос
/ 19 мая 2011

Я бы поставил

[activityIndicator1 startAnimating];

в начале parseXMLFileAtURL метода

и

[activityIndicator1 stopanimating];

в начале parserDidEndDocument, как вы сделали.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...