3

アプリがフォアグラウンドになるたびに 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 内に別のメソッドを作成しますか?

4

2 に答える 2

9

のメソッドに aUIApplicationWillEnterForegroundNotificationを登録する必要があり、アプリがバックグラウンドから戻ってくるたびに、通知用に登録されたメソッドでやりたいことが何でもできます。またはアプリがバックグラウンドからフォアグラウンドに戻ったときに呼び出されません。ViewControllerviewDidLoadViewControllerviewWillAppearviewDidAppear

-(void)viewDidLoad{

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

    name:UIApplicationWillEnterForegroundNotification object:nil];
}

-(void)doYourStuff{

  [webview reload];
}

登録している通知の登録を忘れずに解除してください。

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

viewControllerfor を登録すると、アプリがアクティブになるたびにメソッドが呼び出されることに注意してくださいUIApplicationDidBecomeActiveNotification。この通知に登録するのは適切ではありません

于 2013-04-06T19:07:11.570 に答える
0

UIApplicationDidBecomeActiveNotification または UIApplicationWillEnterForegroundNotification に登録します。

于 2013-04-06T18:44:42.557 に答える