Я использую навигационный контроллер и выдвигаю новые контроллеры представления для переключения между многостраничными приложениями Iphone. Как следует;
- (IBAction)startButton:(id)sender{
GoalViewController *thisGoalViewController = [[GoalViewController alloc]
initWithNibName:@"GoalViewController" bundle:nil];
self.goalViewController = thisGoalViewController;
[thisGoalViewController release];
[[self navigationController] pushViewController:self.goalViewController animated:YES ];
}
Все отлично работает. Но когда я ставлю
NSLog(@"Goal View ID: %p",self);
в методе GoalViewController viewDidLoad я получаю разные значения при каждом переключении страниц.
В GoalViewController я использую это для возврата назад;
- (IBAction)backButton:(id)sender{
[(UINavigationController*)self.parentViewController popViewControllerAnimated:YES];
}
Как я уже сказал, все работает отлично, но я думаю, что я создаю новые экземпляры GoalViewController каждый раз, когда я нажимаю, чтобы посетить экран.
Метод viewDidUnload в GoalViewController никогда не вызывается, поэтому я думаю, что они никогда не будут выпущены и в конечном итоге вызовут сбой. Однако я не смог разбить его, переключая страницы много-много раз.
Я искал примеры для сравнения моего кода с другими, чтобы увидеть, что я делаю неправильно, но пока все, что я делаю, выглядит как правильный способ сделать это.
Я думаю, что я ищу способ проверить, открыт ли все еще целевой контроллер goalViewController, на который я нажал, и переключиться на него вместо выделения нового.
Я был бы очень признателен за понимание этого.
Спасибо,
Грег
приписка
Я действительно пытался вставить это в методы viewWillAppear.
`NSMutableArray *allControllers = [[NSMutableArray alloc] initWithArray:self.navigationController.viewControllers];
NSLog(@"Controllers: %@",allControllers);`
Когда я переключаюсь между представлениями цели-заставки, это вывод, который я получаю. Идентификатор Splash View остается содержимым, но идентификатор Goal View меняется каждый раз.
2011-11-21 01:14:51.388 Controllers: ("<SplashViewController: 0x64468c0>")
2011-11-21 01:14:51.389 Controllers: <SplashViewController: 0x64468c0>
2011-11-21 01:14:58.494 Controllers: <GoalViewController: 0x6458ad0>
2011-11-21 01:14:58.495 Controllers: (
"<SplashViewController: 0x64468c0>",
"<GoalViewController: 0x6458ad0>"
)
2011-11-21 01:15:06.898 Controllers: <SplashViewController: 0x64468c0>
2011-11-21 01:15:11.139 Controllers: <GoalViewController: 0x5771660>
2011-11-21 01:15:11.140 Controllers: (
"<SplashViewController: 0x64468c0>",
"<GoalViewController: 0x5771660>"
Спасибо, Грег