原帖地址 http://blog.csdn.net/wxg694175346/article/details/7757504
###############################################################
首先,为appDelegate增加一个navigationController属性:
利用NSKeyedArchiver和NSKeyedUnarchiver来修改navigationbar。。。
###############################################################
首先,为appDelegate增加一个navigationController属性:
@interface DymAppDelegate : UIResponder <UIApplicationDelegate>
{
UINavigationController *navController_;
}
@property (strong, nonatomic) UIWindow *window;
@property (strong, nonatomic) DymViewController *viewController;
@property (nonatomic, readonly, retain) UINavigationController *navigationController;
@end
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
self.viewController = [[[DymViewController alloc] initWithNibName:@"DymViewController" bundle:nil] autorelease];
//rootViewController设置为navigationController
self.window.rootViewController = self.navigationController;
self.viewController = nil;
[self.window makeKeyAndVisible];
return YES;
}
- (UINavigationController*)navigationController {
if (navController_ == nil) {
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:self.viewController];
// Archive navigation controller for changing navigationbar class
[navController navigationBar];
NSMutableData *data = [[NSMutableData alloc] init];
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
[archiver encodeObject:navController forKey:kRootKey];
[archiver finishEncoding];
[archiver release];
[navController release];
// Unarchive it with changing navigationbar class
NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
[unarchiver setClass:[CustomNaviBar class]
forClassName:NSStringFromClass([UINavigationBar class])];
navController_ = [[unarchiver decodeObjectForKey:kRootKey] retain];
[unarchiver release];
[data release];
}
return navController_;
}
利用NSKeyedArchiver和NSKeyedUnarchiver来修改navigationbar。。。