Когда я переключаюсь между представлениями, мой viewDidLoad не вызывается во второй раз? - PullRequest
6 голосов
/ 08 ноября 2010

Итак, у меня два взгляда. Один просмотр загружается, когда я запускаю приложение. Затем, когда я нажимаю кнопку на этом виде, он загружает другой вид.

- (IBAction)triggerGame
{

leveldata = [[NSMutableDictionary alloc] init];

[leveldata setValue:@"hide" forKey:@"shootarrow"];

[leveldata writeToFile:[self levelFilePath] atomically:YES];
[leveldata release];


Papertoss_MaraAppDelegate *mainDelegate = (Papertoss_MaraAppDelegate *)[[UIApplication sharedApplication] delegate];
[mainDelegate playGame];

}

Это действие вызывает метод в реализации делегата, называемый playGame, который выглядит следующим образом:

- (void)playGame {

[levelView.view removeFromSuperview];
[self.window addSubview:[gameView view]];
[UIView commitAnimations];
}

Это загружает новый вид просто отлично. Затем у меня есть другая кнопка, которая делает то же самое, но возвращает меня к первому виду. И это тоже прекрасно работает. Я могу очень легко перемещаться от одного вида к другому. Но единственная проблема, с которой я столкнулся, это то, что когда я пытаюсь загрузить второе представление во второй раз, viewDidLoad больше не вызывается. Я проверил это с помощью NSLog () в методе viewDidLoad.

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

Любая помощь очень ценится.

Ответы [ 2 ]

9 голосов
/ 08 ноября 2010

Я думаю, вам нужна функция viewDidAppear.viewDidLoad вызывается только один раз для каждого представления, если только что-то не вызывает его выгрузки, например, предупреждение памяти.viewDidAppear вызывается каждый раз, когда вид становится видимым.

4 голосов
/ 08 ноября 2010

Вы хотите -viewDidAppear: для "каждый раз, когда вид отображается" вещи.

...