ViewController не будет обновляться после загрузки - PullRequest
2 голосов
/ 21 ноября 2011

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

Поэтому, если я загружаю второй viewController, в NavBar появляется кнопка «Назад», и я могу изменить свои значения (и они равны хранится, я использовал отладчик).Моя проблема в том, что после нажатия кнопки backButton для входа в мой первый контроллер ViewView он не вызывает метод viewDidLoad.Понятно, что нет обновленных значений вообще, когда эта функция не вызывается.

При первом запуске вызывается метод viewDidLoad, и он делает то, что я хочу.После перехода назад и вперед между viewControllers метод больше не вызывается.

Есть ли решения?

Спасибо!

РЕДАКТИРОВАТЬ:

РЕШЕНО

Я не хотел удалять свой вопрос, возможно, кому-то это тоже нужно:

Этот метод вызывается каждый раз, когда появляется представление, вероятно, он не определен по умолчанию:

-(void)viewDidAppear:(BOOL)animated
{
NSLog(@"View appeared.");
}

Ответы [ 2 ]

2 голосов
/ 21 ноября 2011

Но код обновления (например, [[self view] setNeedsDisplay];) в viewWillAppear.

Чтобы было понятно: viewDidLoad вызывается при загрузке вашего вида. Это происходит в первый раз, когда представление будет отображаться. Когда вы переходите к следующему представлению, первое представление (в зависимости от вашего кода) все еще может быть загружено. Поэтому, когда вы вернетесь к этому виду, viewDidLoad не будет вызван, потому что представление все еще там.

Но каждый раз, когда будет показано представление (например, когда вы вернетесь к этому представлению), будут вызываться методы viewWillAppear и viewDidAppear.

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

1 голос
/ 21 ноября 2011

ViewDidLoad метод будет вызван, когда произойдет инициализация выделения контроллера представления. В случае возврата назад в навигационном контроллере он не создает никаких новых контроллеров представления, он повторно использует предыдущие ссылки из стека навигации.

Следовательно, viewDidLoad не будет вызван. Поскольку ваш контроллер просмотра уже находится в стеке памяти. Так что он просто заставит представление снова появиться в окнах и вызовет viewWillAppear соответственно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...