Большое спасибо! Да, вы правы, навигационный контроллер равен нулю. Я добавляю [EDIT2] в мой вопрос ...

м iOS-приложении я хочу предоставить просмотр настроек. «presentModalViewController» работает очень хорошо:

ViewSettings *controller = [[ViewSettings alloc] initWithNibName:@"ViewSettings" bundle:nil];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:controller];
[self.navigationController presentModalViewController:navController animated:YES];      
[controller release];
[navController release];

К сожалению, я должен изменить свой работающий код и создать ViewSettings, включая UINavigationController в Интерфейсном Разработчике. Почему? Длинная история, я объясню в конце этой темы ...

Я пытаюсь перетащить UINavigationController в мои ViewSettings и создать IBOutlet для доступа к нему в моем классе. Я отдаю этот контроллер "presentModalViewController", но приложение упало ...

Что я делаю не так?

[РЕДАКТИРОВАТЬ]

Сообщение об ошибке:GDB: Программа получила сигнал: «SIGABRT».
Ошибка происходит в последней строке этого кода:

ViewSettings *viewSettings = [[ViewSettings alloc] initWithNibName:@"ViewSettings" bundle:nil];
UINavigationController *navController = viewSettings.navigationController;
UINavigationBar *navBar = navController.navigationBar;
OwnNavigationBar *ownNavBar = (OwnNavigationBar *)navBar;
[ownNavBar drawHeaderImage:YES];
[self.navigationController presentModalViewController:navController animated:YES];

Подробная ошибка:Завершение работы приложения из-за необработанного исключения «NSInvalidArgumentException», причина: «Приложение попыталось представить нулевой модальный контроллер представления на цели».

[/РЕДАКТИРОВАТЬ]

[EDIT2]
Спасибо за вашу помощь! Да, navigationController равен нулю ... Я думаю, что я добавил UINavigationController неправильно ... Я поместил его в это окно, потому что не было возможности поместить его непосредственно в мое представление:
Как правильно добавить UINavigationController?
[/ EDIT2]

PS: почему я должен использовать IB? (Вы можете пропустить это ...)

Мне нужно фоновое изображение в моем UINavigationBar. Моя первая попытка была:

UIImage *image = [UIImage imageNamed: @"header.png"];
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
[self.navigationController.navigationBar addSubview:imageView];
[self.navigationController.navigationBar sendSubviewToBack:imageView];

Но в некоторых выпусках заголовок под UIBarButton не виден! Я много пробовал, например устанавливает "тег" представления и sendSubviewToBack в каждом представлении, но безуспешно. Это очень раздражающая ошибка!

Моя вторая попытка состояла в том, чтобы создать категорию и переписать метод drawRect:

@implementation UINavigationBar(MyNavigationBar)
- (void)drawRect:(CGRect)rect {
    UIImage *image = [UIImage imageNamed: @"header.png"];
    [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
}
@end

Но теперь у всех моих UINavigationBars есть фоновое изображение, и я не могу деактивировать его. Проблема в том, что для «ViewSettings» необходимо фоновое изображение, а для следующих заданных представлений нет.

К сожалению, невозможно установить свойство в категории или вызвать [super drawRect: rect], чтобы избежать рисования изображения.

Моя последняя попытка написать собственный UINavigationBar

@interface OwnNavigationBar : UINavigationBar {
    BOOL _drawHeaderImage;
}

Теперь я могу управлять методом drawRect !! ЗДОРОВО!!

- (void)drawRect:(CGRect)rect {
    if (_drawHeaderImage) {
        UIImage *image = [UIImage imageNamed: @"header.png"];
        [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
    }
    else {
        [super drawRect: rect];
    }
}

Но я отмечаю рано ... :-( Невозможно установить собственную UINavigationBar в UINavigationController !!! "navigationBar" в UINavigationController - свойство только для чтения! AAAAHHHHHHHHHH!

У меня есть один последний шанс: в Интерфейсном Разработчике можно дать UINavigationController собственный UINavigationBar !! ДА! Я ПОНЯЛ!! :-)

Я настроил его в своем MainWindow_iPhone.xib, и он прекрасно работает! Теперь я должен реализовать это для моих ViewSettings, потому что это (модальное) представление нуждается в новом UINavigationController.

PS: Может быть, кто-то может отправить эту ветку в Apple, это все очень раздражающие обстоятельства и ошибки :-(

Ответы на вопрос(2)

Ваш ответ на вопрос