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のバグだと思います。ただし、それでも動作しません。エミュレータで動作するようです。
この方法でleftBarButtonItemを設定してみてください。モーダルで表示している間は表示されません。
self.navigationController?.navigationBar.topItem.leftBarButtonItem =
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
このコードを使用してみてください、
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;
私も同じ問題を抱えていました。ボタンを表示するには、色合いの色を変更する必要がありました。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()
ビューストーリーボードにナビゲーションアイテムを追加し、ViewControllerでそのアウトレットを作成します。次に、self.navigationController?.navigationItem
の代わりにコンセントを使用して、leftBarButtonItemを参照します。
次のように、コードを置き換えてボタンを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;
それが役に立てば幸い....:)