导航项目标题视图 – 对所有推送的视图控制器都一样

你如何保持导航项目标题视图相同的所有推视图控制器?

例如,我想将标题视图设置为应该在所有屏幕上都可见的徽标。

UIImage *logoImage = [UIImage imageNamed:@"navigation-bar-logo"]; UIImageView *titleLogo = [[UIImageView alloc] initWithImage:logoImage]; self.navigationItem.titleView = titleLogo; 

如果我为每个视图控制器单独设置它,iOS7导航栏animation看起来很奇怪。

如果您要显示导航项目标题视图 – 对于所有推送的视图控制器都是相同的

  • 将ViewController设置为ParentViewController,将所有其他ViewController设置为子ViewController。然后,您将在ParentVC中执行什么devise,它将体现在Child VC中。

下面是例子。 在appDelegate类中,

  UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:[[WARootViewController alloc]init]]; self.window.rootViewController = nav; 

在ViewController中,设置imageView框(可选,你可以给你想要的)和图像名称(如果logoImage给NULL内存提及扩展名)。

  UIImage *logoImage = [UIImage imageNamed:@"navigation-bar-logo.jpg"]; UIImageView *titleLogo = [[UIImageView alloc] initWithImage:logoImage]; titleLogo.frame = CGRectMake(0, 0, 50, 30); self.navigationItem.titleView = titleLogo; 
  • 将其余的ViewControllers作为WARootViewControllers的子项

     #import "WARootViewController.h" @interface WAFirstViewController : WARootViewController #import "WARootViewController.h" @interface WASecondViewController : WARootViewController 

一种方法是使用UINavigationItem.titleView和UINavigationItem.rightBarButtonItem。 喜欢这个 :

 viewController.navigationItem.titleView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"yourimage.png"]]; UIBarButtonItem * item = [[UIBarButtonItem alloc] initWithCustomView:[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"yourimage2.jpg"]]]; viewController.navigationItem.rightBarButtonItem = item; 

在这里,我使用UIImageView作为自定义视图,但它可以是UIButton与自定义图像。

我build议你的另一种方法是不使用viewController

 // Create your image UIImage *image = [UIImage imageNamed: @"logo.png"]; UIImageView *imageview = [[UIImageView alloc] initWithImage: image]; // set the text view to the image view self.navigationItem.titleView = imageview; 

希望这个信息会帮助你。 干杯:)