Вы можете просто сохранить контроллер навигации в @property делегата приложения вместо viewcontroller. Так что это будет работать:
Header file:
#import <UIKit/UIKit.h>
@interface AppDelegate : NSObject <UIApplicationDelegate> {
UIWindow *window;
UINavigationController *navController;
}
// if using current compiler, just omit these ivars above
@property (nonatomic, retain) UIWindow *window;
@property (nonatomic, retain) UINavigationController *navController;
@end
Затем @synthesize как обычно и освободите переменную резервного копирования в вашем dealloc.
Кстати, если вам не требуется поддержка iOS3, не добавляйте представление контроллера Nav в качестве подпредставления, просто установите вместо этого rootviewcontroller окна.
Так сделайте это:
self.window.rootViewController = self.navController;
вместо:
[window addSubview:[nvc view]];
Тогда, конечно, создание вашего контроллера навигации становится:
self.navController = [[[UINavigationController alloc] initWithRootViewController:viewController] autorelease];
[viewController release];
Предполагая, что вы только что создали 'viewcontroller' ранее (вы этого не показывали)