In my splash screen I subscribe to the UIApplicationDidBecomeActiveNotification.
 - (void)viewDidLoad
{
    [super viewDidLoad];
    // register notifications
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(checkInternetConnection:) name:UIApplicationDidBecomeActiveNotification object:nil];
}
-(void) checkInternetConnection:(NSNotification *) notification
{
    internetStatus = [[Reachability reachabilityForInternetConnection] currentReachabilityStatus];
    if(internetStatus == NotReachable)
    {
        [AppHelper showAlert:@"ERROR" message:@"Error downloading data. Please check your network connection and try again." cancelButtonTitle:nil otherButtonTitles:@[@"OK"]];
        return;
    }
    [self viewDidAppear:YES];
}
- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    if(!(internetStatus == NotReachable))
    {
        AppDelegate *applicationDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
        [applicationDelegate performSelector:@selector(showMainMenu) withObject:[NSNumber numberWithBool:YES] afterDelay:3.0];
    }
}
The problem is that the internet connection will only be checked on the splash screen so if I am in the middle of some other screen and I loose internet connectivity then there is no way to tell that the connection has been gone. How can I make a good logic to check for the client's internet connection.
 
     
    