2016-09-15 8 views
0

私は2つを持っていますViewControllers。ナビゲーションバーにUIViewを追加します。Push Segueの後にナビゲーションバーにUIViewを追加

私はUINavigationItemアウトレットを作成し、UINavigationItemアウトレットtitleViewにプログラム的に作成のUIViewを追加することにより、第1のナビゲーションバーの上にのUIViewを追加することができます。

コードスニペット(HomeVC - 拳のViewController):

class HomeVC: UIViewController { 

@IBOutlet weak var homeNavigationItem: UINavigationItem! 
let navBarView = UIView() 
let topNavBarLabel = UILabel() 
let screenWidth = UIScreen.main.bounds.width 

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 

navBarView.frame = CGRect(x: 0.0, y: 0.0, width: screenWidth, height: 50.0) 

topNavBarLabel.text = "Hello World" 
topNavBarLabel.textAlignment = NSTextAlignment.center 
topNavBarLabel.textColor = UIColor.white 
topNavBarLabel.frame = CGRect(x: 0.0, y: 10.0, width: screenWidth, height: 20.0) 
navBarView.addSubview(topNavBarLabel) 

homeNavigationItem.titleView = navBarView 

} 

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

スクリーンショットホームビュー:今すぐ

enter image description here

私はプッシュ後に同じことをやろうとしていますSecondVCの包み Segue。

コードスニペット(DetailVC - 2番目のViewController):

class DetailsVC: UIViewController { 

let navBarView = UIView() 
let screenWidth = UIScreen.main.bounds.width 
let navBarTopLabel = UILabel() 

override func viewDidLoad() { 
    super.viewDidLoad() 

    // Do any additional setup after loading the view. 

navBarView.frame = CGRect(x: 0.0, y: 50.0, width: screenWidth, height: 50.0) 
navBarView.backgroundColor = UIColor.black 

navBarTopLabel.frame = CGRect(x: 0.0, y: 10.0, width: screenWidth, height: 20.0) 
navBarTopLabel.textColor = UIColor.white 
navBarTopLabel.text = "Details Hello" 
navBarTopLabel.textAlignment = NSTextAlignment.center 

navBarView.addSubview(navBarTopLabel) 

self.view.addSubview(navBarView) 
self.view.bringSubview(toFront: navBarView) 
} 

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

スクリーンショット詳細表示:

enter image description here

ストーリーボードスクリーンショット:

Storyboard Screenshot

ビュー階層:

View Hierarchy

注:は、私は意図的にビューが

作成されていることを確認するために、より多くの0よりも視野にY-位置を割り当てられた。しかし、私はできませんよとUINavigationItemを作成するには、プログラムで作成したビューをビューに追加し、さらにサブビューを前面に表示しようとしています。

注:はい、のサイズUINavigationBarが増加しており、ここに参照してください。Change width/height UINavigationBar embedded in a Navigation Controller

答えて

0

をあなたはよりUIViewController

public var navigationItem: UINavigationItem { get } 

用に定義された変数を使用することができますドキュメント:

オンデマンドで作成され、ビューコントローラがナビゲーション外観をカスタマイズできるようにしました。

のでviewDidLoadUIViewControllerの各サブクラスであなただけ行うことができます

self.navigationItem.titleView = navBarView 
関連する問題