2009-11-19 5 views
4

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

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

Пожалуйста, расскажите, как вернуться на 4-й уровень обзора.

ответ

1

К сожалению, 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 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^