0

このコードでナビゲーションバーにボタンを作成しました:

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

このボタンに対する私のアクション:

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

これは問題なく動作しますが、背景とボタンのスタイルを変更する必要があります (以下のコード)。

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];

これはまさに私が必要としているものですが、行動を起こす必要があります

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

このコードはエラーなしでコンパイルされますが、ボタンは応答しません。

誰が何が悪いのか知っていますか?

4

4 に答える 4

7

これを試して..

- (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");     
}
于 2013-09-17T09:37:07.463 に答える
2

You are Missing actionand targetfor ボタン

を使用して設定できます。

[myButtonEn setTarget:self];
[myButtonEn setAction:@selector(buttonEN:)];
于 2013-09-17T09:04:37.557 に答える
1

このボタンの外観を変更したい場合があります。

[[UIBarButtonItem appearance] setBackgroundImage:<doneBackgroundImage>
                                            forState:UIControlStateNormal
                                               style:UIBarButtonItemStyleDone
                                          barMetrics:UIBarMetricsDefault];
于 2013-09-17T08:57:14.680 に答える