2015-11-13 35 views
10

私の初期ビューコントローラーがナビゲーションコントローラーとタブバーコントローラーに組み込まれているアプリで作業しています。ナビゲーションバーにバーボタンの項目が表示されない

私のアプリには3つのタブがあり、1つのタブは設定ビューです。これは5つのボタンを持つテーブルビューです。すべてのボタンは、タッチされたときに同じView Controllerを表示します。

ボタンの1つに触れると、緑色のナビゲーションバーが表示されますが、ボタンが機能しません。

私はストーリーボード内のビューにナビゲーションアイテムをドラッグして、バーボタンアイテムを配置しようとしました。私はストーリーボードのボタンを見ることができますが、私はそれを実行すると私のアプリに表示されません。

は、私も自分のviewDidLoad()に次のコードを追加しました:

let leftItem = UIBarButtonItem(title: "< Back", style: .Done, target: self, action: Selector("Save")) 
let rightItem = UIBarButtonItem(title: "Save", style: .Plain, target: self, action: Selector("Save")) 

//self.parentViewController?.navigationItem.leftBarButtonItem = leftItem // also doesn't work 

navigationController?.navigationItem.leftBarButtonItem = leftItem 
navigationController?.navigationItem.rightBarButtonItem = rightItem 

しかし、それは何の効果もありません。

いくつかのクリーンビルド(CMD + Shift + K)とリビルド(CMD + B)を行ったかどうかを、正しいUIViewControllerがストーリーボードのビューに割り当てられているかどうかを確認しました。

以下の画像は、私のストーリーボードの一部のスクリーンショットと、ボタンが表示されないビューでの私のアプリケーションのスクリーンショットです。

EDIT

は、ビュー内のコントロールについての新しいスクリーンショットを追加しました。これらは、私のviewDidLoadに追加のコードなしでまたはと動作しません。

Screenshot of my Storyboard

Screenshot of my app where the buttons should show up

Screenshot of the the setup of the controls in my view

+2

ちょうど先頭に自己を追加してみてください(self.navigationItem.leftBarButtonItemを使用するためにプッシュセグエ、3回目を使用する第二ボタンを再度追加する必要がいけない、あなたの最初のナビゲーションコントローラを削除します(Xcodeの9、スウィフト4を使用)

。) –

+0

@ErsinSezginありがとう!私の問題は解決されました。あなたが答えを出すことができるとき、私はそれを受け入れます。 – Jules

答えて

5

にストーリーボードに直接追加提案する(してみてください最初に自己を追加してください。)*元の回答はコメントでした。

7

代わり

navigationController?.navigationItem.leftBarButtonItem = leftItem 

のやる

navigationItem.leftBarButtonItem = leftItem 

更新私は2番目あなただけself.navigationItem.leftBarButtonItemを使用するためにプッシュセグエ、3回目を使用し、ボタンを再度追加する必要がいけない、あなたが最初のナビゲーションコントローラを削除し、あなたのViewController

+0

申し訳ありませんが、それは何の効果もありません。 – Jules

+0

私の答えが更新されました。あなたはストーリーボードで追加できませんか?最初にnavigationItemをドラッグ&ドロップする必要があります。 – MarkHim

+0

これは機能しません。私は自分の質問をストーリーボードのビューに追加したコントロールのスクリーンショットで更新しました。 – Jules

-1
UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 40, 40)]; 

    [button setImage:[[UIImage imageNamed:@"BtnBack"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate] forState:UIControlStateNormal]; 
    [button.imageView setTintColor:[UIColor whiteColor]]; 
    [button addTarget:self action:@selector(buttonClicked:) 
    forControlEvents:UIControlEventTouchUpInside]; 
    UIBarButtonItem *buttonItem = [[UIBarButtonItem alloc] 
            initWithCustomView:button]; 
    self.navigationItem.leftBarButtonItem = buttonItem; 

このコードViewWillAppearメソッドに書き込みます。

0

これは最近私に起こった。私はErsinが言及したことをしていたが、役に立たなかった。もう少し撤回し、これが犯人だったことが判明:

nav.pushViewController(notifications, animated: false) nav.pushViewController(interactionCreateOrEdit, animated: false)

私は

nav.setViewControllers([notifications, interactionCreateOrEdit], animated: false)

にそれを変更し、UIBarButtonItemsが再び現れ始めました。

1

私は2つのセグを持っていました。ひとつはストーリーボードセグエであり、もうひとつはプログラムです。ストーリーボードのセグエは、ボタンを期待どおりに示しました。しかし、プロガンマ性のセグエは、ボタンのないビューを示しました。プログラムでセグエのために

、私が使っていた:

present(theNewVC, animated: true) 

ボタンが登場し、私がすることを変更したときに正しく機能:文書毎の

show(theNewVC, sender: self) 

present(...)モーダルビューコントローラを提示します。どうやらモーダルビューコントローラはナビゲーションバーボタンを取得していないようです。私はさらに、私のストーリーボードのセグをPresent Modallyに変更することでこれを確認しました。ボタンもそこに消えました。

関連する問題