【问题标题】:How to make visible a leftBarButtonItem created programmatically and set backgroundimage如何使以编程方式创建的 leftBarButtonItem 可见并设置 backgroundimage
【发布时间】:2012-11-26 08:52:53
【问题描述】:

以下代码在我的应用程序中运行良好。但是那个 leftbarbuttonitem 是不可见的。而且我无法将背景图像设置为leftBarButtonItem。我做错了什么,但我不知道是什么错误?是否可以使背景图像可见并设置?

UIImageView *NavigationBarImage =[[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 320, 44)];
NavigationBarImage.image=[UIImage imageNamed:@"mapbutton.png"];
[self.navigationController.navigationBar addSubview:NavigationBarImage];
self.navigationItem.hidesBackButton = YES;

UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonItemStyleBordered target:self action:@selector(goBack)];
self.navigationItem.leftBarButtonItem = backButton;

-(void)goBack
{
    [self.navigationController popViewControllerAnimated:YES];
}

【问题讨论】:

    标签: iphone objective-c uinavigationcontroller uinavigationitem


    【解决方案1】:

    如果您想为导航项添加背景图像,您必须添加自定义按钮,如下所示:

    UIButton *tempButton                            =       [UIButton buttonWithType:UIButtonTypeCustom];
    tempButton.frame                                =       CGRectMake(0, 0, 50, 30);
    tempButton.showsTouchWhenHighlighted            =       YES;
    tempButton.backgroundColor                      =       [UIColor clearColor];
    [tempButton setBackgroundImage:[UIImage imageNamed:@"back.png"] forState:UIControlStateNormal];
    [tempButton setTitle:@"Back" forState:UIControlStateNormal];
    [tempButton addTarget:self action:@selector(goBack) forControlEvents:UIControlEventTouchUpInside];
    
    UIBarButtonItem *backBtn                        =         [[UIBarButtonItem alloc]initWithCustomView:tempButton];
    
    self.navigationItem.leftBarButtonItem           =       backBtn;
    

    要为导航栏添加背景图片,您可以使用以下代码

     [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"header.png"] forBarMetrics:UIBarMetricsDefault];
    

    【讨论】:

    • 非常感谢您的回复.. 但现在 leftbarbuttonitem 也是不可见的
    • - (void)viewDidLoad { [super viewDidLoad]; UIButton *tempButton = [UIButton buttonWithType:UIButtonTypeCustom]; tempButton.frame = CGRectMake(0, 0, 30, 30); tempButton.showsTouchWhenHighlighted = YES; tempButton.backgroundColor = [UIColor clearColor];
    • [tempButton setBackgroundImage:[UIImage imageNamed:@"food.png"] forState:UIControlStateNormal]; [tempButton addTarget:self action:@selector(goBack) forControlEvents:UIControlEventTouchUpInside]; UIBarButtonItem *backBtn = [[UIBarButtonItem alloc]initWithCustomView:tempButton]; self.navigationItem.leftBarButtonItem = backBtn; [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"mapsnav.png"] forBarMetrics:UIBarMetricsDefault]; self.navigationItem.hidesBackButton = YES;self.view.backgroundColor=[UIColor colorWithPatternImage:[UIImage imageNamed:@"background.png"]];}
    • 您的 viewdidload 看起来不错,您的导航栏是否可见,或者您可以向我发送您的项目,然后我可以调试它。如果你想给我发电子邮件 imneev@gmail.com
    【解决方案2】:
    UIButton *home = [UIButton buttonWithType:UIButtonTypeCustom];  
    UIImage *homeImage = [UIImage imageNamed:@"YOUR_IMAGE.png"];  
    [home setBackgroundImage:homeImage forState:UIControlStateNormal];  
    [home addTarget:self action:@selector(your_Action)  
    forControlEvents:UIControlEventTouchUpInside];  
    home.frame = CGRectMake(0, 0, 69, 26);  
    UIBarButtonItem *button2 = [[UIBarButtonItem alloc] initWithCustomView:home];
    [[self navigationItem] setLeftBarButtonItem:button2];
    [button2 release];
    button2 = nil;
    

    【讨论】:

      猜你喜欢
      • 2021-10-30
      • 1970-01-01
      • 1970-01-01
      • 2015-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多