iphone - uiactivityindicatorview не скрывает - PullRequest
0 голосов
/ 23 декабря 2010

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

@implementation FeedBackViewController
@synthesize m_activity,webView;

-(void)viewDidLoad{

    [super viewDidLoad];


    [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://equinox.library.pitt.edu/limesurvey/index.php?sid=87435&lang=en"]]];


}

- (void)dealloc {
    [m_activity release];
    [webView release];
    [super dealloc];
}

- (void)webViewDidFinishLoad:(UIWebView *)webView {
    [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
    [m_activity stopAnimating];
    [m_activity removeFromSuperview];
    m_activity = nil;
}

- (void)webViewDidStartLoad:(UIWebView *)webView { 
NSLog(@"in webViewDidFinishLoad")    
    [UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
    m_activity.center = self.view.center;
    [self.view addSubview: m_activity];
    [m_activity startAnimating];
}

заголовочный файл

@interface FeedBackViewController : UIViewController<UIWebViewDelegate>{
    IBOutlet UIWebView *webView;        
    IBOutlet UIActivityIndicatorView *m_activity; 
}
@property (nonatomic, retain) IBOutlet UIWebView *webView;
@property (nonatomic, retain) UIActivityIndicatorView *m_activity;

Кроме того, я установил флажок в IB, который говорит, скрывать при остановке.Я положил NSLog(@"in webViewDidFinishLoad") в метод webViewFinishLoad, похоже, что он не попадает в этот метод по какой-то причине.и для

NSLog(@"m_activity = %@",m_activity);

в методе viewDidLoad выдает сообщение, как показано ниже в консоли

> m_activity = <UIActivityIndicatorView:
> 0x4d3d920; frame = (150 79; 20 20);
> hidden = YES; opaque = NO; autoresize
> = RM+BM; layer = <CALayer: 0x4d35ce0>>

Ответы [ 2 ]

3 голосов
/ 23 декабря 2010

Ваша webViewDidFinishLoad функция, вероятно, не вызывается. Это может произойти, если веб-представлению не удается открыть URL-адрес. В любом случае, вам также следует внедрить метод webView:didFailLoadWithError: и остановить там индикатор активности.

-edit-

Чтобы получать события от UIWebView, вам нужно установить контроллер в качестве делегата UIWebView. Просто реализовать UIWebViewDelegate недостаточно. Вы можете сделать это, обновив метод viewDidLoad следующим образом:

-(void)viewDidLoad{
 [super viewDidLoad];

 webView.delegate = self;
 [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://equinox.library.pitt.edu/limesurvey/index.php?sid=87435&lang=en"]]];
}
0 голосов
/ 23 декабря 2010

Вы должны добавить NSLog(@"in webViewDidFinishLoad") строк в ваш код и посмотреть, как консоль достигает этих точек.Поскольку это очень простой пример, возможно, m_activity не связан с реальным объектом?Попробуй посмотреть, получаешь ли ты адрес или ноль, когда добавляешь это в конец своего viewDidLoad:

NSLog(@"m_activity = %@",m_activity);

...