0

私はナビゲーションバーのマーケット時間中にソケット接続を使用して更新されるいくつかのインデックス値を表示する必要がある株式市場アプリケーションに取り組んでいます。一般的なUINavigationControllerアプリケーション間でカスタムビューを使用

この機能は、アプリケーションのすべての画面で共通です。

私はUINavigationControllerをサブクラス化し、.xibファイル内のビューを設計してインデックス値をviewDidLoadに表示し、それをサブビューとして追加しました。

enter image description here

(私はSWIFT 3.1を使用しています)

let width = self.view.frame.width - 100.0 
    let frame = CGRect(x: 50, y: 25, width: width, height: 44) 
    viewNavigation = NavigationView(frame: frame) 
    self.view.addSubview(viewNavigation!) 

この機能を実現するために、他のより良い方法はありますか?

答えて

0

それは私にとっては悪くないようです。

window.rootViewControllerUINavigationControllerに設定することは、実際には良い方法です。それでも他のサブを含めることができますUINavigationController

しかし、あなたのNavigationViewについては? navigationControllerビュープロパティ内にサブビューを直接追加する場合、これは予想される動作ではないため、未定義の動作が発生する可能性があります。編集した答えとコメント続き

はい、私はあなたがUINavigationBarカスタムtitleViewを使うべきだと思います。 あなたは簡単に別のViewControllerまたは一度それを設定することができます。

self.navBar.topItem?.titleView = NavigationView(frame: frame)

+0

ナビゲーションコントローラの代わりにナビゲーションバーに追加する必要がありますか? – iAnurag

+0

正確に情報を表示したいのですが? NavigationController navigationBarタイトルの周りに? – Lifely

+0

私は質問を編集しました...どうかご確認ください – iAnurag

0

私はあなたがのUIViewControllerのサブクラスを作成し、値を表示し、非表示にしたり変更するメソッドを追加することができると思います。例を見てください。

BaseViewControlerが

func addNavigationTitileView() { 
    // add your code to show your value 
    } 

今すぐあなたのビューを作成する必要があり、あなたのviewWillAppear

override func viewWillAppear(_ animated: Bool) { 
     super.viewWillAppear(animated) 
     addNavigationTitileView() 
    } 

に呼び出しを次のようにメソッドを書くあなたのBaseViewController上のUIViewController

のサブクラスでありますBaseViewControllerをサブクラス化するコントローラ。変更が加えられたナビゲーションバーが自動的に追加されます。 navigationTitleView

を変更するためのより良いご例えば

を使用すると、ナビゲーションバーの動的な値を表示したいとしましょう。上記の方法を使用すると、View Controllerに行くたびに簡単に更新できます。

今、あなたは2つのオプションであるいくつかのビューコントローラのためにそれを追加したくないと思う。

  1. BaseViewControllerをサブクラス化せずにView Controllerを作成します。
  2. コントローラで同じメソッドを作成(オーバーライド)し、メソッドを空白にする必要があります。

あなたはあなたがbaseviewController viewWillAppearメソッドにオブザーバーを登録し、viewWillDisappear方法でそれを削除する必要が 、そのように実装するにはNotification center method method called multiple time ios in Tab bar (View controller)? How to remove observer?

を参照してくださいNSNotificationCenter addObserver を使用する必要性を使用する必要があるテキストをリアルタイムに変更する場合。

オブザーバー方式では、表示する値を設定できます。

+0

この承認は多くのメモリを消費しています。これは既に行われています。私は代替案を探しています。 – iAnurag

関連する問題