Я схожу с ума, используя навигационные контроллеры на iPhone.
У меня есть приложение с основным XIB (с окном) внутри которого я поместил NavigationController, внутри которого у меня есть ViewController. Все связано, и ViewController определен с правильным унаследованным именем класса.
В didFinishLaunchingWithOptions у меня есть:
[self.window addSubview:navigationController.view];
[self.window makeKeyAndVisible];
В .h у меня есть:
@interface MainAppDelegate : NSObject <UIApplicationDelegate> {
IBOutlet UIWindow *window;
IBOutlet UINavigationController* navigationController;
}
@property (nonatomic, retain) UIWindow *window;
@property (nonatomic, retain) UINavigationController* navigationController;
@end
Затем в First ViewController у меня есть кнопка, подключенная к этому методу:
- (IBAction) definePreferences:(id)sender {
PreferencesController *nextWindow = [[[PreferencesController alloc] initWithNibName:@"Preferences" bundle:nil] autorelease];
UINavigationController* navController = [[[UINavigationController alloc] initWithRootViewController:nextWindow] autorelease];
[self.navigationController presentModalViewController:navController animated:YES];
}
все элементы в главном xib, кажется, связаны ... и сохраняются в свойствах. AppDelegate с его окном и navigationController ... оконным корневым контроллером с тем же navigationController ... и владельцем файла с делегатом приложения ...
Все работает нормально, но окно настроек никогда не появляется ...
Вы понимаете, почему?
При необходимости я должен сказать, что этот контроллер первого вида заставляет интерфейс камеры появляться и накладывать поверх него наложение. Кнопка на это наложение. ImagePicker показывается так в viewDidAppear:
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
[self presentModalViewController:picker animated:YES];
[picker release];
РЕДАКТИРОВАТЬ:
В viewDidAppear self.navigationController в порядке в начале и в конце метода.
В definePreferences self.navigationController равен нулю. Ничто не называется между этими двумя вызовами.
Ничего
РЕДАКТИРОВАТЬ:
Проблема может быть связана с тем, как я запускаю viewController, на котором находится кнопка.
Вот метод, вызванный из firstView, вызванного контроллером навигации.
- (void) viewDidAppear:(BOOL)animated {
UIImagePickerController* picker = [[UIImagePickerController alloc] init];
// Set the image picker source:
picker.sourceType = UIImagePickerControllerSourceTypeCamera;
picker.showsCameraControls = NO;
picker.navigationBarHidden = YES;
picker.wantsFullScreenLayout = YES;
// Insert the overlay
OverlayViewController* overlayController = [[OverlayViewController alloc] initWithNibName:@"Overlay" bundle:nil];
picker.cameraOverlayView = overlayController.view;
// Show the picker:
[self presentModalViewController:picker animated:NO];
[picker release];
[super viewDidAppear:YES];
}
Но ... как мне быть?