Ios MenuItemButtom操作没有';行不通

Ios MenuItemButtom操作没有';行不通,ios,objective-c,uinavigationitem,Ios,Objective C,Uinavigationitem,我想添加一个自定义图像作为左菜单项。这就是我使用customView的原因,否则我会得到蓝色的图像 我就是这样做到的: UIImageView *menuItemImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"MenuButton"]]; UIBarButtonItem *leftMenuItemButton = [[UIBarButtonItem alloc] initWithCustomView:men

我想添加一个自定义图像作为左菜单项。这就是我使用customView的原因,否则我会得到蓝色的图像

我就是这样做到的:

UIImageView *menuItemImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"MenuButton"]];
UIBarButtonItem *leftMenuItemButton = [[UIBarButtonItem alloc] initWithCustomView:menuItemImageView];
[leftMenuItemButton setAction:@selector(menuClicked:)];
[leftMenuItemButton setTarget:self];
self.navigationItem.leftBarButtonItem = leftMenuItemButton;
一切正常,除了我点击按钮什么也没发生。它永远不会出现在这样的情况下:

- (void)menuClicked:(id)menuClicked {
    NSLog(@"%s menuClicked", __PRETTY_FUNCTION__);
}

有人能帮我吗?

这里的问题似乎是使用
ImageView
,UIBarButtonim目标和操作仅在自定义视图为UIButton时有效

试试这样的

UIButton* someBtn = [UIButton buttonWithType: UIButtonTypeInfoLight];
UIBarButtonItem *leftMenuItemButton = [[UIBarButtonItem alloc]   initWithCustomView:someBtn];
[leftMenuItemButton setAction:@selector(menuClicked:)];
[leftMenuItemButton setTarget:self];
self.navigationItem.leftBarButtonItem = leftMenuItemButton;

希望这对您有所帮助首先,您需要创建一个自定义UIButton和UIBarButtonim

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button addTarget:self action:@selector(menuClicked:) forControlEvents:UIControlEventTouchUpInside];
[button setImage:[UIImage imageNamed:@"image.png"] forState:UIControlStateNormal];
[button setImage:[UIImage imageNamed:@"image.png"] forState:UIControlStateHighlighted];
UIBarButtonItem *barButton = [[UIBarButtonItem alloc] initWithCustomView:button];
将按钮添加到导航栏

[self.navigationItem setLeftBarButtonItems:[NSArray arrayWithObjects:barButton, nil]];

感谢n00bprogrammer:

 UIBarButtonItem * menuItem = [[UIBarButtonItem alloc] initWithImage:[[UIImage imageNamed:@"MenuButton"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] style:UIBarButtonItemStylePlain target:self action:@selector(menuClicked:)] ;
    self.navigationItem.leftBarButtonItem = menuItem;

两个答案都指向正确的方向

我就是这样让它工作的:

UIButton *showCalendar = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 30, 30)];
showCalendar.frame = CGRectMake( 0, 0, 40, 30 );
[showCalendar setImage:[UIImage imageNamed:@"calendar"] forState:UIControlStateNormal];
[showCalendar addTarget:self action:@selector(toggleCalendar) forControlEvents:UIControlEventTouchUpInside];
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:showCalendar];

以下是代码,在imageview中添加轻触手势:

UIImageView *menuItemImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"MenuButton"]];
UIBarButtonItem *leftMenuItemButton = [[UIBarButtonItem alloc] initWithCustomView:menuItemImageView];

UITapGestureRecognizer *tapGesture =
[[UITapGestureRecognizer alloc] initWithTarget:self
                                        action:@selector(menuClicked:)];
[menuItemImageView addGestureRecognizer:tapGesture];

使用
ui按钮
代替
ui图像视图
,并将目标添加到按钮。然后使用按钮作为自定义视图。在按钮上设置图像。或者使用
initWithImage:style:target:action:
。我建议使用第二个选项。当我使用第二个选项时,我的图像是蓝色的,而不是原始颜色。使用
initWithImage:[[UIImage ImageName:@“MenuButton”]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]
Thank的作用就像一个符咒:)这不显示任何内容:sChange ImageName两个按钮状态的值。像这样,我无法设置图像。