导航项标题视图 - 对于所有推送的视图控制器都相同

时间:2014-03-14 04:23:29

标签: ios objective-c uinavigationitem

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

E.g。我想将标题视图设置为一个应该对所有屏幕都可见的徽标。

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

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

2 个答案:

答案 0 :(得分:-1)

一种方法是使用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。

我建议你的另一种方法是不使用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;

希望此信息可以帮助您。干杯:)

答案 1 :(得分:-1)

如果要显示导航项目标题视图 - 所有推送视图控制器都相同

  • 将ViewController设为ParentViewController和其他所有 ViewController作为那个孩子。那么你将在ParentVC做什么设计,它将反映在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