Если обратное свойство является сохраняемым свойством, значит, навигационный контроллер протекает. проблема в том, что вы обходите метод доступа и отпускаете обратную сторону. Это просто грязный код. Лучший способ сделать это - создать метод доступа для обратной стороны, который будет выделять новый, только если вы его еще не создали. Это называется ленивой загрузкой. Для этого просто оставьте @synthesize для обратной стороны (но вы не должны устанавливать его вне метода доступа), в своем заголовочном файле измените свойство на и добавьте этот метод в реализацию:
- (UINavigationController *)flipside {
if (flipside != nil) {
return flipside;
}
FlipsideViewController *controller = [[[[FlipsideViewController alloc] initWithNibName:@"Settings" bundle:nil];
controller.delegate = self;
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:controller];
[controller release];
navController.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
// This implies a retain if your flipside property is set to retain
self.flipside = navController;
[navController release];
}
убедитесь, что в методе viewDidUnload контроллера представления указан self.flipside = nil
, из которого вы включили код (я предполагаю, что это действие presentSettings).
как теперь должно выглядеть ваше действие presentSetting:
- (IBAction)presentSettings {
// make sure you use the accessor self.flipside instead on accessing the variable directly
[self presentModalViewController:self.flipside animated:YES];
}