Вы можете просто создать категорию на NavigationBar, добавив в нее методы по полной кастомизации — добаление фона, кнопок, слайдеров, свой для каждого контроллера. Тогда во — (void)viewDidLoad вы сможете просто вызывать метод, кастомизирующий NavigationBar для этого контроллера.
Вызов будет выглядеть как-то так:
- (void)viewDidLoad {
[self.navigationController.navigationBar setBarForSmth];
}
Сама же категория будет представлять из себя следущее:
@interface UINavigationBar (NavigationBar)
-(void)setBarForCard;
@end
@implementation UINavigationBar (NavigationBar)
- (void)setBarForSmth
{
UIImageView *aTabBarBackground = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"BarImage"]];
aTabBarBackground.frame = CGRectMake(0,0,self.frame.size.width,44);
[self sendSubviewToBack:aTabBarBackground];
//Ну и тут добавляеть контроллов по вкусу
Возможно, частенько вам придется это делать во viewWillAppear, а не viewDidLoad, так он не будет вызываться при переключении между контроллерами.