1

Я не использую раскадровки. И в настоящее время в ViewController1. Здесь, при нажатии кнопки, я вызываю этот код.Состояние Восстановление не работает при представлении viewcontroller?

InnerViewController *innerVc = [[InnerViewController alloc] initWithNibName:@"InnerViewController" bundle:nil titleText:@"vaibhav"]; 
    UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:innerVc]; 
    nav.restorationIdentifier = @"innerNavSR"; 
    [self.navigationController presentViewController:nav animated:YES completion:nil]; 

И в InnerViewController restorationIdentifier и restorationClass дается. У меня есть собственные методы, написанные для restoration.like

viewControllerWithRestorationIdentifierPath 
encode and decode restoration. 

Если я изменяю мой

[self.navigationController presentViewController:nav animated:YES completion:nil]; 

в

[self.navigationController pushViewController:innerVc animated:YES]; 

Он отлично работает. Что мне не хватает или что-то не так с настоящим. Для попытки я даже пробовал это:

[self presentViewController:nav animated:YES completion:nil]; 

Но бесполезно. Не работает.

Результат при представлении это -

viewControllerWithRestorationIdentifierPath

и decodeRestorableStateWithCoder становятся называется. звонок также поступает в viewdidload, но не в viewwillappear. и я визуально вижу Viewcontroller1. Однако все в порядке с push

Что-то особенное необходимо с настоящим ??

ответ

1

У меня была очень похожая проблема и я боролся полдня. Проблема заключалась в том, что я назначал идентификатор восстановления при регулярном создании контроллера представления, но НЕ назначал его при создании восстановленного экземпляра.

В вашем конкретном сценарии убедитесь, что при восстановлении внутреннего ЧПУ ему также присваивается идентификатор «innerNavSR» перед его возвратом в ОС.

Надеюсь, что это поможет.

+0

Большое спасибо, вы только что спасли мне массу волос! –