2

私はViewController(ViewController.m、Webサービスを介してデータをロードします。これらのメソッドはGetHTTP.mに含まれています。

GetHTTP.mにはReachable.h、インターネット接続がダウンしたときに通知を受け取るために含まれています。

[[NSNotificationCenter defaultCenter] addObserver:self 
       selector:@selector(checkNetworkStatus:) 
       name:kReachabilityChangedNotification object:nil];

しかし、GetHTTP :: checkNetworkStatusメソッド内からアラートを実行するにはどうすればよいですか?すべてのビューがViewController.mクラス内にあるようにしますか?

おそらく、ViewControllerクラス内のメソッドをセレクターのターゲットとして使用できますが、複数のViewControllerからGetHTTPを呼び出すため、selector-targetは別のViewClassから呼び出されるたびに変更する必要があります。

たぶん私は単純なMVCルールを見逃していますか?

前もって感謝します。キリスト教徒

4

2 に答える 2

1

このコードを使用してアラートメッセージを送信します

-(void) checkNetworkStatus:(NSNotification *)notice
{
    recheabilityBool=FALSE;
    nonrecheabilityBool=FALSE;
    // called after network status changes
    NetworkStatus internetStatus = [internetReachable currentReachabilityStatus];
    switch (internetStatus)
    {
        case NotReachable:
        {
            nonrecheabilityBool=TRUE;

            NSLog(@"The internet is down.");
            [self checkAndCreateDatabase];
            [self readLikeDislikeFromSyncDB];

            UIAlertView *myAlert = [[UIAlertView alloc] initWithTitle:@"No Internet Connection" message:@"Please connect to the internet to experience all the features of this app." delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil];  
            [myAlert show];  
            NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
            Con=0;
            [prefs setInteger:Con forKey:@"conKey"];
            UINavigationController *navCon = [[UINavigationController alloc] initWithRootViewController:self.libraryViewController];
            [navCon setNavigationBarHidden:YES];
            [[self window] setRootViewController:navCon];

            break;
        }
        case ReachableViaWiFi:
        {


            recheabilityBool=TRUE;
            NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
            Con=404;
            [prefs setInteger:Con forKey:@"conKey"];
            [self performSelectorOnMainThread:@selector(storeLikeFromCTB) withObject:nil waitUntilDone:YES];
            // [self deleteAllRecordsDB];



            //  [self performSelector:@selector(storeDisLikeFromCTB) withObject:nil afterDelay:0];
            //[self performSelector:@selector(GetApps) onThread:[self myThread] withObject:nil waitUntilDone:YES];
            //[self performSelector:@selector(GetApps) withObject:nil afterDelay:0];
            [self performSelectorOnMainThread:@selector(updateToCTB) withObject:nil waitUntilDone:YES];


            [self performSelectorOnMainThread:@selector(GetApps) withObject:nil waitUntilDone:YES];            
            //[self performSelector:@selector(gotoHome) withObject:nil afterDelay:0];

            NSLog(@"The internet is working via WIFI.");


            break;
        }
        case ReachableViaWWAN:
        {
            NSLog(@"The internet is working via WWAN.");

            break;
        }
    }

    NetworkStatus hostStatus = [hostReachable currentReachabilityStatus];
    switch (hostStatus)
    {
        case NotReachable:
        {
            if( nonrecheabilityBool==FALSE)
            {
                [self checkAndCreateDatabase];
                [self readLikeDislikeFromSyncDB];           
                NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
                Con=0;
                [prefs setInteger:Con forKey:@"conKey"];
                UINavigationController *navCon = [[UINavigationController alloc] initWithRootViewController:self.libraryViewController];
                [navCon setNavigationBarHidden:YES];
                [[self window] setRootViewController:navCon];

                NSLog(@"A gateway to the host server is down.");
            }          
            break;

        }
        case ReachableViaWiFi:
        {
            if(recheabilityBool==FALSE)
            {

                recheabilityBool=TRUE;

                NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
                Con=404;
                [prefs setInteger:Con forKey:@"conKey"];
                [self performSelectorOnMainThread:@selector(storeLikeFromCTB) withObject:nil waitUntilDone:YES];
                //  [self performSelector:@selector(storeDisLikeFromCTB) withObject:nil afterDelay:0];
                //[self performSelector:@selector(GetApps) onThread:[self myThread] withObject:nil waitUntilDone:YES];
                //[self performSelector:@selector(GetApps) withObject:nil afterDelay:0];
                [self performSelectorOnMainThread:@selector(updateToCTB) withObject:nil waitUntilDone:YES];


                [self performSelectorOnMainThread:@selector(GetApps) withObject:nil waitUntilDone:YES];            
                //[self performSelector:@selector(gotoHome) withObject:nil afterDelay:0];

                NSLog(@"The internet is working via WIFI.");
                break;
            }


            NSLog(@"A gateway to the host server is working via WIFI.");

            break;
        }
        case ReachableViaWWAN:
        {
            NSLog(@"A gateway to the host server is working via WWAN.");
            break;
        }
    }
}
于 2012-11-08T10:36:40.600 に答える
0
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(checkForReachability) name:kReachabilityChangedNotification object:nil];

    -(void)checkForReachability{
    Reachability *reachability = [Reachability reachabilityForInternetConnection];

    [reachability startNotifier];

    NetworkStatus remoteHostStatus = [reachability currentReachabilityStatus];

    if(remoteHostStatus == NotReachable) {
        //Do something
    }
     else if (remoteHostStatus == ReachableViaWiFi) {
    // Do something
     }

    else{

    // Else do something else
    }
}
于 2012-11-08T09:33:05.720 に答える