Как я могу заменить точное представление, которое выскочило после использования unwindSegue?

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

2 ответа

Решение

Да, вы можете сделать это, но не с помощью перехода, так как они всегда создают новые контроллеры (за исключением раскрутки). Таким образом, вы можете создать свойство для вашего игрового контроллера в главном меню и создать его экземпляр, только если он еще не существует, а затем отправить его с помощью pushViewController:animated:. Что-то вроде этого,

-(IBAction)gotToGameView:(id)sender {
    if (! self.game) {
        self.game = [self.storyboard instantiateViewControllerWithIdentifier:@"Game"];
    }
    [self.navigationController pushViewController:game animated:YES];
}

Вы должны хранить данные, необходимые для воссоздания представления. Затем, когда пользователь снова входит в тот же экран, вы можете воссоздать представление с сохраненными данными.

Другие вопросы по тегам