Метод ViewDidLoad вызывается снова

У меня есть два контроллера просмотра. В первом я делаю некоторые вещи, а затем могу нажать второй контроллер представления, нажав кнопку (кнопка, связанная с другим контроллером представления в раскадровке). Там я могу сделать некоторые настройки и так далее. Я возвращаюсь к первому контроллеру представления с помощью кнопки «Готово». Но затем снова вызывается метод ViewDidLoad, и все "вещи" (текст в текстовых полях,...) исчезают.

Надеюсь, вы понимаете мою проблему.

Почему? И как я могу отключить это?


person user1554681    schedule 27.02.2013    source источник
comment
Пожалуйста, опубликуйте код, показывающий, как вы переходите на второй контроллер представления.   -  person iDev    schedule 28.02.2013
comment
Я делаю это в раскадровке... щелкните правой кнопкой мыши на кнопке-> перетащите ее на второй ViewController-> Стиль: Модальный   -  person user1554681    schedule 28.02.2013


Ответы (2)


Как вы собираетесь вернуться к первому контроллеру представления со второго? Я думаю, ваша проблема в том, что вы повторно создаете первый контроллер представления, когда пользователь нажимает «Готово».

Вместо этого вы должны использовать либо «popViewControllerAnimated», либо «dismissViewControllerAnimated», чтобы вернуться к первому контроллеру представления.

например: (один из этих 2 должен работать):

[self.navigationController popViewControllerAnimated:YES];
[self dismissViewControllerAnimated:YES completion:nil];
person melsam    schedule 27.02.2013
comment
У меня нет навигационного контроллера. В раскадровке я перетаскиваю его правой кнопкой мыши на кнопку «Готово» на первый ViewController. - person user1554681; 28.02.2013
comment
+1: я согласен, похоже, что он не выталкивает / не закрывает контроллер представления должным образом, а вместо этого создает его новый экземпляр, который действительно снова вызывает viewDidLoad: (в конце концов, это новый экземпляр) - person JRG-Developer; 28.02.2013
comment
ООО, прекрасно. Я только что протестировал его с помощью [self rejectViewControllerAnimated: YES завершения: nil]; и это сработало. Но теперь проблема в том, что если я добавлю текст в текстовое поле во втором ViewController, а затем вернусь к первому, а затем снова во втором, текст исчезнет... - person user1554681; 28.02.2013

Возможно, firstViewController выгружается из-за получения предупреждения о памяти. Поэтому, когда он снова открывается, он вызывает ViewDidLoad

person Hossam Ghareeb    schedule 27.02.2013