UINavigationItem右栏按钮不显示

时间:2015-12-15 09:03:00

标签: objective-c uinavigationbar uinavigationitem

作为我的头衔,我经历了几个网站,但未能取得成果。但是,我成功地在导航栏上添加了一个图像。这是我目前面临的两个问题,两者都在UINavigationBar部分。 1.无法显示右栏 2.无法隐藏后退箭头“<”

MasterViewController.m

//Back Button
UIButton *backBtn = [UIButton buttonWithType:UIButtonTypeCustom];
UIImage *backBtnImage = [UIImage imageNamed:@"sidemenu.png"];
[backBtn setBackgroundImage:backBtnImage forState:UIControlStateNormal];
backBtn.frame = CGRectMake(0, 0, 54, 30);

//Rightbarbutton
UIButton *infoButton = (UIButton *) [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"icon_info.png"]];
UIBarButtonItem *infoButtonItem = [[UIBarButtonItem alloc] initWithCustomView:infoButton];
self.navigationItem.rightBarButtonItem = infoButtonItem;

//Image (Working and displaying)
UIImage *image = [UIImage imageNamed: @"icon_image.png"];
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(245, 0, 30, 42)];
[imageView setImage:image];
[self.navigationController.navigationBar addSubview:imageView];

2 个答案:

答案 0 :(得分:0)

这是您的UINavigationItem + AtAdditions.h文件

#import <UIKit/UIKit.h>

typedef NS_ENUM(NSInteger, ATNavigationItemButtonSide) {
    ATNavigationItemButtonSideRight,
    ATNavigationItemButtonSideLeft
};

@interface UINavigationItem(ATAdditions)

// This method adds an image-only button to the requested size (right or left) of the current navigation item, the image can't be tapped
- (void)addColorfulImage:(NSString*)imageName toSide:(ATNavigationItemButtonSide)side;

@end

这是您的UINavigationItem + AtAdditions.m文件

#import "UINavigationItem+ATAdditions.h"

@implementation UINavigationItem(ATAdditions)

- (void)addColorfulImage:(NSString*)imageName toSide:(ATNavigationItemButtonSide)side {
    // Create a button with the required image on it
    UIImage *image = [UIImage imageNamed:imageName];
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    button.bounds = CGRectMake(0, 0, image.size.width, image.size.height );
    [button setImage:image forState:UIControlStateNormal];

    // Stop the events (it's an image only)
    button.userInteractionEnabled = NO;

    // Add the button to the navigation item
    if (side == ATNavigationItemButtonSideLeft) {
        self.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:button];
    }
    else if (side == ATNavigationItemButtonSideRight) {
        self.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:button];
    }
}

@end

稍后您可以导入.h文件并在视图控制器的导航项目中使用它。

答案 1 :(得分:0)

我认为你应该将rightItem的内容初始化为UIButton而不是从ImageView到UIButton的演员......所以你正在为后面的项目做同样的程序..