Какой метод вызывается, когда пользователь возвращается с трамплина после запуска контроллера модального представления? - PullRequest
0 голосов
/ 11 февраля 2012

Этот вопрос очень похож на этот , с одним исключением.Вместо того, чтобы обычный контроллер навигации запускал мой контроллер представления по умолчанию, я добавил дополнительный контроллер представления, который является просто заставкой, которая позволяет мне показать диалог загрузки / etc

в моем "viewDidLoad"Контроллер основного представления Я запускаю его, используя «presentModalViewController», например, так:

- (void)viewDidLoad
{
    SplashPage *splashScreen = [[[SplashPage alloc] initWithNibName:@"SplashPage" bundle:nil viewControllerObj:self] autorelease];
    [self presentModalViewController:splashScreen animated:NO]; 

    [super viewDidLoad];
}

Затем в моем представлении-заставке я делаю несколько вещей (во-первых, это базовая проверка подключения, чтобы убедиться, что приложение имеет доступ в Интернет, например).

И при первом запуске приложения я делаю эту проверку внутри viewDidLoad теперь активного контроллера заставки (например, так)

- (void)viewDidLoad
{
    [super viewDidLoad];

    [self.viewController invokeConnectivityCheck];
}

Проблема заключается в том,пользователь "застрял" на предварительном запуске экрана загрузки (в основном), какой метод вызывается в этом контроллере заставки, когда они возвращаются с трамплина (многозадачность поддерживается здесь)?

Я пробовал следующеено каждый не срабатывал, когда я закрывал приложение и возвращался

  • applicationWillEnterForeground
  • didFinishLaunchingWithOptions
  • applicationDidBecomeActive

Чего мне здесь не хватает, что подходит для iOS5?Или из-за модального подхода, который я здесь использую, вместо основного всплывающего окна вызывается основной / стандартный контроллер вида?

Заранее спасибо

Ответы [ 2 ]

1 голос
/ 11 февраля 2012

appliationDidBecomeActive непременно будет вызываться, когда вы «возвращаетесь с трамплина».

Документы:

Этот метод вызывается, чтобы ваше приложение знало, что оно перемещеноиз неактивного в активное состояние.Это может произойти из-за того, что ваше приложение было запущено пользователем или системой.Приложения также могут вернуться в активное состояние, если пользователь решил игнорировать прерывание (например, входящий телефонный звонок или SMS-сообщение), которое временно отправило приложение в неактивное состояние.

0 голосов
/ 11 февраля 2012

Таким образом, похоже, что шаблон, который я использовал, не подходил для приложения iPhone в стиле контроллера навигации (через appDelegate), поэтому вместо того, чтобы контроллер по умолчанию / основной вид обрабатывал этот мод в методе viewDidLoad, я выдвинул эту логику к приложению самостоятельно делегировать, так что это не является обязанностью каждого контроллера представления напрямую.

Если вы планируете сделать что-то подобное, я вызову это в приложении Delegates? метод с использованием текущего активного контроллера представления (в основном я сохраняю состояние в appDelegate, чтобы он знал о контроллере представления в фокусе)

- (void)applicationDidBecomeActive:(UIApplication *)application
{   
    SplashPage *splashScreen = [[[SplashPage alloc] initWithNibName:@"SplashPage" bundle:nil] autorelease];
    [[self activieViewController] presentModalViewController:splashScreen animated:NO];

    ConnectivityWebService* service = [[[ConnectivityWebService alloc] initWithAppDelegate:self] autorelease];
    [service verifyConnectivity];
}

Другим требованием этого является обратный вызов в appDelegate для закрытия модального режима, например, так:

- (void)callBackAfterConnectivityCheck
{
    [[self activieViewController] dismissModalViewControllerAnimated:NO];
}

Надеюсь, что это было полезно для кого-то другого (не то, чтобы оно прямо отвечало на вопрос) - если у кого-то есть законный ответ, я буду отдавать этому должное, так как это было главным образом для истории / другого взгляда на использованный образец.

...