Что произойдет, если вы попытаетесь представить свой контроллер сведений, используя [selfsentModalViewController: detailsController animated: YES] вместо pushViewController контроллера навигации? Кроме того, добавление представления к окну не должно быть необходимым. Нажатие контроллера представления должно быть достаточно.
Попробуйте добавить NSLog ([описание self.navigationController]) и посмотрите, имеет ли self.navigationController значение nil. (Может случиться, если ваш текущий контроллер не является субконтроллером UINavigationController). Передача сообщения нулевому объекту просто молча завершается неудачей, поэтому есть большая вероятность, что проблема в этом.
Надеюсь, это поможет!
РЕДАКТИРОВАТЬ: обычно нет необходимости создавать подкласс UINavigationController. Проверьте эту страницу в документации Apple: Документы Apple: Использование контроллеров навигации Это объясняет настройку довольно хорошо. Если вы создаете свой «корневой» контроллер представления программно в делегате приложения, вам нужно сделать что-то вроде этого:
// set up main view controller
DrawingBrowserController *controller = [[DrawingBrowserController alloc] init];
// create a navigation controller that "wraps" the controller
navigationController = [[UINavigationController alloc] initWithRootViewController: controller];
[controller release];
// Add the navigation controller's view to the window
[window addSubview:[navigationController view]];
[window makeKeyAndVisible];
По сути, вы «оборачиваете» свой корневой контроллер вида в контроллер навигации. Если вы используете Interface Builder, вы также можете настроить его там.