2015-07-01 4 views
1

У меня есть приложение для навигации. Корневой контроллер (RootViewController) имеет кнопку, которая переходит к другому контроллеру представления (DetailViewController1). Это очень легко сделать в раскадровке XCode.Перемещение в viewcontroller в раскадровке всегда создает новый ViewController, как я могу повторно использовать предыдущий ViewController?

Моя проблема: DetailViewController1 всегда создает новый экземпляр, когда я перехожу к нему. В то время как я попробовал другой способ, я создал еще один класс DetailViewController2 и создаю его экземпляр при запуске приложения. Затем я пишу код, чтобы нажать экземпляр DetailViewController2, в этом случае DetailViewController2 будет создан только один раз.

Вопрос: Есть ли настройка на раскадровке, чтобы я мог предотвратить создание одного и того же экземпляра контроллера представления при навигации по нему? Так же, как я нажимаю созданный вручную DetailViewController2.

ответ

2

Нет, нет. Единственный способ нажать всегда один и тот же экземпляр - выполнить push-код, как вы уже сделали.

+0

Я вижу, я хочу убедиться, что я что-то пропустил. Благодарю. – Howard

+0

Правильно. Причина этого в том, что по умолчанию iOS уничтожает UIViewController, когда вы возвращаетесь от него, чтобы он освобождал память, которую он использовал. Сохранение адреса ViewController таким образом не рекомендуется, так как он может создать цикл сохранения, приводящий к потере памяти. – danialzahid94

1

Установите идентификатор панели справки для контроллера view. Затем в кнопке Действие

myViewController* vc=[self.storyboard instantiateViewControllerWithIdentifier:@"storyboardid"]; 
    [self.navigationController pushViewController:vc animated:YES]; 
Смежные вопросы