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.rootViewController設置爲UINavigationController是我實際上的一個很好的做法。它仍然可以包含其他分UINavigationController

然而,是你的NavigationView?如果直接在navigationController視圖屬性中添加子視圖,那不是預期的行爲,並且您可能會發生一些未定義的行爲。

追隨你的答案編輯和評論:

是的,我認爲你應該使用UINavigationBar定製titleView。 您可以輕鬆地將其設置成不同的viewController或一次:

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

+0

我應該將它添加到導航欄,而不是導航控制器? – iAnurag

+0

您想在哪裏顯示信息?圍繞NavigationController navigationBar標題? – Lifely

+0

我編輯了這個問題...請檢查 – iAnurag

0

我想你可以創建UIViewController子類,並添加方法來顯示和隱藏或更改值。請看例子。

BaseViewControler是UIViewController的

一個子類在您BaseViewController寫一個方法如下

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

現在所說的在你的viewWillAppear中

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

現在,您需要創建視圖控制器繼承BaseViewController。它會自動添加包含更改的導航欄。

爲了您更好的例子來改變navigationTitleView

比方說,你要顯示的導航欄上的動態值。使用上面的方法,每次進入視圖控制器時都很容易更新。

現在想想你不想添加一些視圖控制器,你是兩種選擇。

  1. 創建視圖控制器沒有繼承BaseViewController。
  2. 在控制器上創建相同的方法(覆蓋),方法應該是空白的。

如果你想改變文本的實時需要使用需要使用NSNotificationCenter的addObserver 見Notification center method method called multiple time ios in Tab bar (View controller)? How to remove observer?

要實現這樣的, 您需要在baseviewController viewWillAppear中的方法註冊觀察員,並刪除它viewWillDisappear方法。

在Observer方法上,您可以設置要顯示的值。

+0

這種方式消耗了大量的記憶..這已經是地方..我正在尋找替代..謝謝 – iAnurag

相關問題