Как возобновить просмотр стека приложения iphone - PullRequest
4 голосов
/ 19 ноября 2009

Мы реализуем одно веб-приложение в iPhone. если я отвечаю на входящий телефонный звонок, мое приложение перезапускается снова, вместо того чтобы возобновить приложение до состояния, в котором оно находилось в фокусе.

мы реализуем стек представлений. Т.е. я поддерживаю представления в виде стека, и каждое представление имеет такую ​​информацию, как изображения и текстовую информацию, если я нахожусь в 3-м или 4-м представлении, если я ответил на входящий телефонный звонок, мое приложение перезапускается и показывает только 1-е представление.

Скажите, пожалуйста, как перейти на 4-й уровень просмотра.

Ответы [ 2 ]

1 голос
/ 19 ноября 2009

К сожалению, iPhone не очень помогает вам здесь. Я не могу гарантировать, что это будет полезно для вас, но я так и делаю.

В моем приложении у меня есть следующий протокол:

@protocol SaveState

    - (NSData*) saveState;
    - (id) initWithSaveState:(NSData*)data;

@end

Любое UIViewController, которое мне нужно для сохранения его состояния, реализует его.

В applicationWillTerminate: У меня есть следующий код:

for (UIViewController* vc in self.navigationController.viewControllers) {
    if ([vc conformsToProtocol:@protocol(SaveState)]) {
        NSArray* state = [NSArray arrayWithObjects:NSStringFromClass([vc class]), [(UIViewController<SaveState>*)vc saveState], nil];
        [vcList addObject:state];
    }
}

Затем я сохраняю vcList в NSUserDefaults. Для восстановления состояния у меня это в applicationDidFinishLaunching::

for (NSArray* screen in screenList) {
    UIViewController<SaveState>* next = [[NSClassFromString([screen objectAtIndex:0]) alloc] initWithSaveState:([screen count] == 2) ? [screen objectAtIndex:1] : nil];
    if (next != nil) {
        [[self navigationController] pushViewController:next animated:NO];
        [next release];
    }
    else {
        // error handling
    }
}
0 голосов
/ 19 ноября 2009

См. Образец Apple DrillDownSave - он демонстрирует, как это сделать.

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