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

相关问题