web-dev-qa-db-ja.com

leftbarbuttonitemがナビゲーションバーに表示されない

IOSアプリを開発していて、ナビゲーションバーの左側のバーボタンアイテムとして画像を使用する際に問題が発生しました。私はこれを次の方法で試みました:

UIImage *backButtonImage = [UIImage imageNamed:@"backbuttonCB"];
CGRect buttonFrame = CGRectMake(0, 0, backButtonImage.size.width, backButtonImage.size.height);
UIButton *backButton = [[UIButton alloc] initWithFrame:buttonFrame];
[backButton setImage:backButtonImage forState:UIControlStateNormal];
UIBarButtonItem *backBarButtonItem= [[UIBarButtonItem alloc] initWithCustomView: backButton];
self.navigationItem.leftBarButtonItem = backBarButtonItem;

アプリの実行中にバーボタンが表示されないようです。

次に、この他の方法を次のように試しました。

self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"backbuttonCB"] style:UIBarButtonItemStylePlain target:nil action:@selector(methodname)];

この方法は実際に機能しました。ただし、表示された画像は青みがかっており、意図したとおりには見えませんでした。この画像の色合いを変更しても効果はありませんでした。

この問題をどのように解決できるか考えていますか?

編集:それが役立つ場合は、より多くの情報。これは、ナビゲーションスタックの最初のビューです。ナビゲーションスタックはモーダルに表示されます。つまり、前のビューコントローラーがあり、前のビューコントローラーとナビゲーションコントローラーの間にモーダルセグエがあります。これは、ナビゲーションスタックの最初のビューです。

編集:問題IS修正済み。xcodeを再起動してエミュレータではなく実際のデバイスでテストしたところ、問題なく動作したため、xcodeのバグだと思います。ただし、それでも動作しません。エミュレータで動作するようです。

14
sosale151

この方法でleftBarButtonItemを設定してみてください。モーダルで表示している間は表示されません。

self.navigationController?.navigationBar.topItem.leftBarButtonItem =

30
sheetal

leftBarButtonItemに割り当てる前にmyButton.sizeToFit()を呼び出すと役に立ちました。

    let cancelButton = UIButton()
    cancelButton.backgroundColor = .red
    cancelButton.setTitle("Common/Cancel".localized, for: .normal)
    cancelButton.sizeToFit() //!!!
    let cancelBarButton = UIBarButtonItem(customView: cancelButton)
    navigationItem.leftBarButtonItem = cancelBarButton
13
izik461

このコードを使用してみてください、

self.navigationItem.hidesBackButton=YES;

UIImage *buttonImage = [UIImage imageNamed:@"Back"];
UIButton *aButton = [UIButton buttonWithType:UIButtonTypeCustom];
[aButton setImage:buttonImage forState:UIControlStateNormal];
aButton.frame = CGRectMake(0.0,0.0,buttonImage.size.width,buttonImage.size.height);
[aButton addTarget:self action:@selector(backBtnTapped) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithCustomView:aButton];
self.navigationItem.leftBarButtonItem = backButton; 
6
iApple

私も同じ問題を抱えていました。ボタンを表示するには、色合いの色を変更する必要がありました。Swiftのコードは次のとおりです。

self.navigationItem.leftBarButtonItem = UIBarButtonItem.init(image:UIImage.init(named: "btn_back_default")!, style:UIBarButtonItemStyle.Plain, target: self, action: Selector("back"))
self.navigationItem.leftBarButtonItem?.tintColor = UIColor.whiteColor()
4
simple_code

ビューストーリーボードにナビゲーションアイテムを追加し、ViewControllerでそのアウトレットを作成します。次に、self.navigationController?.navigationItemの代わりにコンセントを使用して、leftBarButtonItemを参照します。

0
FStrout

次のように、コードを置き換えてボタンをcustomTypeとして初期化します。

UIImage *backButtonImage = [UIImage imageNamed:@"backButtonCB"];
    CGRect buttonFrame = CGRectMake(0, 0, backButtonImage.size.width, backButtonImage.size.height);
    UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom];
    [backButton setFrame:buttonFrame];
    [backButton setImage:backButtonImage forState:UIControlStateNormal];
    UIBarButtonItem *backBarButtonItem= [[UIBarButtonItem alloc] initWithCustomView: backButton];
    self.navigationItem.leftBarButtonItem = backBarButtonItem;

それが役に立てば幸い....:)

0
Mohd Prophet