2017-02-18 15 views
2

これを単純にするには、アプリケーションの設計上、組み込みのナビゲーションコントローラを使用することができず、その代わりにビューコントローラのマニュアルバックボタンを使用して前のボタンに戻る必要があります。私が知る限り、以前のView Controllerはプログラムでこのビューコントローラにもプッシュします。だから私はここで多くの異なる質問のボタンのいくつかの素晴らしいコードを見つけた、と私はこのアプリのために書いた。問題は、プログラムを実行すると、作成したバーボタンアイテムが表示されないということです。コードにはエラーは表示されず、何も表示されない理由が混乱しています。できるだけ明確にするために画像とコードを追加します。何か助けてもらえたらいつもありがとう!使用さプログラムで作成された戻るボタンがナビゲーションバーに表示されませんか?

コード:

@IBOutlet weak var roomImage: UIImageView! 
@IBOutlet weak var locationLabel: UILabel! 
@IBOutlet weak var roomName: UINavigationItem! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    // Back Button Code 

    let backButton = UIBarButtonItem(title:"Back",style: UIBarButtonItemStyle.plain, target: self, action: #selector(DetailView.back(sender:))) 
    self.navigationItem.leftBarButtonItem = backButton 

    navigationItem.rightBarButtonItem = backButton 
    navigationItem.hidesBackButton = false 

    // Hide da tab bar 

    self.tabBarController?.tabBar.isHidden = true 

    // Do any additional setup after loading the view. 


    // Enter data from other view controllers 

    //roomName.title = stringPassed 
    roomImage.image = imagePassed 
    locationLabel.text = locationPassed 

} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

/* 
// MARK: - Navigation 

// In a storyboard-based application, you will often want to do a little preparation before navigation 
override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    // Get the new view controller using segue.destinationViewController. 
    // Pass the selected object to the new view controller. 
} 
*/ 

// Back Button Action 

func back(sender: UIBarButtonItem) { 

    if let navigationController = self.navigationController { 

     navigationController.popViewController(animated: true) 

    } 
} 

}アプリが実行されるナビゲーションバー

実際のストーリーボード

私は何かをコンセントやその種のものにしていないのでしょうか?ありがとうございました!!

ストーリーボードレイアウト

ツリー詳細ビューのモデル(ナビゲーションバーの問題を持つ1)

EDIT:まだ動作していないが、あなたが与えたリンクやアイデアより具体的な答えが提示されるまで、探求する新しいアイデアやオプションがたくさんありました。ありがとうございました!!!

+0

私はこの方法を好まなかったでしょう。なぜnavigationControllerを使用できないのですか? –

+0

ナビゲーションコントローラを使用した場合、3つの異なるビューコントローラがこの単一のビューにプッシュしているので、1つではなく3つではありません。すべてはタブビューに基づいています。簡単な方法があると思えば私はすべての耳です。 –

+0

@Frank_Cernyストーリーボードの構造を表示できますか?コントロールからviewControllerにドラッグしてNavigationItemを追加しましたか? –

答えて

1

あなたViewControllerにコントロールライブラリパネルからドラッグを持ってNavigationBarを削除します。 self.navigationItemを使用してnavigationItemを設定すると、接続されていないため、navigationBarアイテムは参照されません。

ViewControllernavigationController?.pushViewController(myVC, animated: true)でプッシュすると、myVCの画面には自動的にNavigationBarと表示されます。

+0

私はあなたの言ったことをして、プッシュビューを使用してナビゲーションコントローラにナビゲーションバーが表示されているときにだけボタンが表示されます。ただし、ナビゲーションコントローラにルートされていない他の2つのビューについては、まだ戻るボタンはありません。あなたの答えは大変意味があり、私はこの仕事をするために何でもできることを試しています。また、ナビゲーションバーをオフにすると、そこにルートされた単一のビューがdetailViewにプッシュされても、いつものように何も起こりません。 –

+0

@Frank_Cerny navigationControllerを紛失した場合、ナビゲーションバーは表示されません。 –

+0

全体的なポイントは、ナビゲーションコントローラに根ざされていないビューで動作する戻るボタンを作成することです。ビューコントローラで一日中ボタンを戻すことができますが、その実装はこの問題では機能しません。あなたの答えは、残念なことに問題ではなかったナビゲーションコントローラを根底にしたものでした。 –

0

あなたは、私は疲れて、あなたがDetialViewコントローラ にプッシュしなかった方法を示しすることができ、プログラム

このような
func showDetialViewController(){ 
let detialViewController = UIViewConroller() 
navigationController?.pushViewController(detialViewController, animated: true) 
} 
+0

回答は、より多くの質問を出さないように手元にある質問に答えることを意図しています。 – Adeel

+0

あなたが言ったように1つのビューコントローラーがプッシュし、他の2つのショーは上のコメントをチェックします。 –

関連する問題