Всегда переходите на определенный контроллер uiview - PullRequest
0 голосов
/ 05 января 2012

У меня есть приложение IOS, которое использует сетевое соединение, и время от времени оно теряет это сетевое соединение, всякий раз, когда это происходит, я хочу, чтобы приложение вернулось к определенному UIViewController. Каков наилучший способ добиться этого? ?

Можно ли это сделать из приложения Delegate?

1 Ответ

1 голос
/ 05 января 2012

Используете ли вы класс Reachability, описанный в документации Apple ? Если нет, вы должны взглянуть на это. Это даст вам статус сети, в том числе ли вы подключены к Интернету. Он имеет уведомление об изменении состояния сети, поэтому вы можете добавить наблюдателя в свой делегат приложения или в любое другое место, где он вам нужен для достижения вашей цели.

В Интернете уже имеется много справки с примерами использования Reachability, и этот может быть чем-то, с чего вы можете начать.

Обновление

Уведомления об изменении Raachability могут использоваться для информирования вашего приложения, когда соединение потеряно или восстановлено. См. Оператор уведомления в приведенном ниже коде для класса Reachability;

static void ReachabilityCallback(SCNetworkReachabilityRef target, SCNetworkReachabilityFlags flags, void* info)

{

    #pragma unused (target, flags)

    NSCAssert(info != NULL, @"info was NULL in ReachabilityCallback");

    NSCAssert([(NSObject*) info isKindOfClass: [Reachability class]], @"info was wrong class in ReachabilityCallback");



    //We're on the main RunLoop, so an NSAutoreleasePool is not necessary, but is added defensively

    // in case someon uses the Reachablity object in a different thread.

    NSAutoreleasePool* myPool = [[NSAutoreleasePool alloc] init];



    Reachability* noteObject = (Reachability*) info;

    // Post a notification to notify the client that the network reachability changed.

    [[NSNotificationCenter defaultCenter] postNotificationName: kReachabilityChangedNotification object: noteObject];



    [myPool release];

}

Чтобы это работало, вам нужно вызвать startNotifier:

- (BOOL) startNotifier

{

    BOOL retVal = NO;

    SCNetworkReachabilityContext    context = {0, self, NULL, NULL, NULL};

    if(SCNetworkReachabilitySetCallback(reachabilityRef, ReachabilityCallback, &context))

    {

        if(SCNetworkReachabilityScheduleWithRunLoop(reachabilityRef, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode))

        {

            retVal = YES;

        }

    }

    return retVal;

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...