xcode UIBarButtonItem 背景图片和设置动作

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/18845272/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-15 03:48:23  来源:igfitidea点击:

xcode UIBarButtonItem background image and setting action

iosxcodeuibarbuttonitem

提问by Nizzre

I created button in navigation bar with this code:

我使用以下代码在导航栏中创建了按钮:

UIBarButtonItem *myButtonEn = [[UIBarButtonItem alloc] initWithTitle:@"EN" style:UIBarButtonItemStyleDone target:self action:@selector(buttonEN:)];

My action for this button:

我对这个按钮的操作:

- (void) buttonEN:(id)sender {
  NSLog(@"English language"); 
}

This works fine but I have to change background and button's style (code below).

这工作正常,但我必须更改背景和按钮的样式(下面的代码)。

UIImage *imageEN = [UIImage imageNamed:@"cys_lang_en.png"];
UIButton *buttonImgEN = [UIButton buttonWithType:UIButtonTypeCustom];
buttonImgEN.bounds = CGRectMake( 0, 0, imageEN.size.width, imageEN.size.height );
[buttonImgEN setImage:imageEN forState:UIControlStateNormal];
UIBarButtonItem *myButtonEn = [[UIBarButtonItem alloc] initWithCustomView:buttonImgEN];

This is axactly what I need, but I need to set action

这正是我需要的,但我需要采取行动

[myButtonEn setTarget:self];
[myButtonEn setAction:@selector(buttonEN:)];

This code is compiled with no errors but button does not respond.

此代码编译时没有错误,但按钮没有响应。

Does anyone know what is wrong?

有谁知道出了什么问题?

回答by ggg_1120

try this..

- (void)viewDidLoad 
{
    [super viewDidLoad];

 UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
    [btn setFrame:CGRectMake(0.0f, 0.0f, 25.0f, 40.0f)];
    [btn addTarget:self action:@selector(buttonEN:) forControlEvents:UIControlEventTouchUpInside];
    [btn setImage:[UIImage imageNamed:@"cys_lang_en.png"] forState:UIControlStateNormal];
    UIBarButtonItem *eng_btn = [[UIBarButtonItem alloc] initWithCustomView:btn];
    self.navigationItem.rightBarButtonItem = eng_btn;
}

-(void)buttonEN:(id)sender
{
   NSLog(@"English language");     
}

回答by Toseef Khilji

You are Missing actionand targetfor button

你是失踪actiontarget按钮

You can set using,

您可以设置使用,

[myButtonEn setTarget:self];
[myButtonEn setAction:@selector(buttonEN:)];

回答by ninja_iOS

You might want to change apperance of this button.

您可能想要更改此按钮的外观。

[[UIBarButtonItem appearance] setBackgroundImage:<doneBackgroundImage>
                                            forState:UIControlStateNormal
                                               style:UIBarButtonItemStyleDone
                                          barMetrics:UIBarMetricsDefault];

回答by shannoga

You don't need to use custom view for image, Try to use:

您不需要为图像使用自定义视图,请尝试使用:

UIBarButtonItem *btn = [[UIBarButtonItem alloc] initWithImage:yourImage style:UIBarButtonItemStylePlain target:target action:@selector(selector)];