Как обновить UIWebView, когда приложение выходит на передний план?

Я хотел бы обновить UIWebView всякий раз, когда мое приложение выходит на передний план. Все, что у меня действительно есть в моем ViewController.m, - это метод, который проверяет доступ в Интернет (hasInternet) и viewDidLoad.

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

@synthesize webview;

-(BOOL)hasInternet{
    Reachability *reach = [Reachability reachabilityWithHostName:@"www.google.com"];
    NetworkStatus internetStats = [reach currentReachabilityStatus];

    if (internetStats == NotReachable) {
        UIAlertView *alertOne = [[UIAlertView alloc] initWithTitle:@"You're not connected to the internet." message:@"Please connect to the internet and restart the app." delegate:self cancelButtonTitle:@"Dismiss" otherButtonTitles:nil];
        [alertOne show];
    }

    return YES;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    [self hasInternet];
    [webView loadRequest: [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://warm-chamber-7399.herokuapp.com/"]] ];
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

Любые советы по включению этой функции? Выполняется ли это в AppDelegate или я создаю другой метод в ViewController.m?

Ответ 1

Вы должны зарегистрировать UIApplicationWillEnterForegroundNotification в своем методе ViewController viewDidLoad, и всякий раз, когда приложение возвращается с фона, вы можете делать все, что хотите, в методе, зарегистрированном для уведомления. ViewController viewWillAppear или viewDidAppear не будет вызываться, когда приложение вернется с фона на передний план.

-(void)viewDidLoad{

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(doYourStuff)

    name:UIApplicationWillEnterForegroundNotification object:nil];
}

-(void)doYourStuff{

  [webview reload];
}

Не забудьте отменить регистрацию зарегистрированного уведомления.

-(void)dealloc {
    [[NSNotificationCenter defaultCenter] removeObserver:self];
}

Примечание, если вы зарегистрируете свой ViewController для UIApplicationDidBecomeActiveNotification, тогда ваш метод будет вызываться каждый раз, когда ваше приложение станет активным. Было бы нецелесообразно регистрироваться для этого уведомления.

Ответ 2

Зарегистрируйте для UIApplicationDidBecomeActiveNotification или UIApplicationWillEnterForegroundNotification.