iPhone - контроллер навигации не работает - PullRequest
1 голос
/ 15 марта 2011

Я схожу с ума, используя навигационные контроллеры на 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];
}

Но ... как мне быть?

Ответы [ 2 ]

1 голос
/ 15 марта 2011

Во-первых, никогда не звоните в IBAction setPreferences:.Это нарушает KVC и может в конечном итоге вызвать все виды странного поведения.setX: является зарезервированным именем для установщика свойства с именем x.

В этом методе не следует создавать контроллер nav (т. Е. navController).Вы должны использовать тот, который вы создали в NIB (self.navigationController).Проверьте, если это ноль.Если это так, то вы либо не настроили навигационный контроллер в NIB, либо не подключили его к этому контроллеру представления.

Также следует убедиться, что nextWindow не ноль.

0 голосов
/ 15 марта 2011

Я наконец решил проблему.Смотри https://stackoverflow.com/questions/5317968/iphone-camera-overlay-going-down-after-a-modal-view-transition

У меня немного меньше волос ...: -)

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