在应用程序中使用自定义视图的常见UINavigationController
我正在使用股票市场应用程序,在该应用程序中,我必须显示一些索引值,这些索引值在导航栏的上市时间内使用套接字连接进行更新。在应用程序中使用自定义视图的常见UINavigationController
该功能在应用程序的所有屏幕中都很常见。
我已将子类UINavigationController设计为.xib文件中的视图,以显示viewDidLoad
中的索引值并将其添加为子视图。
(我使用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!)
是否有其他更好的方法来实现这个功能?
这对我来说并不糟糕。
将您的window.rootViewController
设置为UINavigationController
是我实际上的一个很好的做法。它仍然可以包含其他分UINavigationController
然而,是你的NavigationView?如果直接在navigationController
视图属性中添加子视图,那不是预期的行为,并且您可能会发生一些未定义的行为。
追随你的答案编辑和评论:
是的,我认为你应该使用UINavigationBar
定制titleView
。 您可以轻松地将其设置成不同的viewController或一次:
self.navBar.topItem?.titleView = NavigationView(frame: frame)
我想你可以创建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
比方说,你要显示的导航栏上的动态值。使用上面的方法,每次进入视图控制器时都很容易更新。
现在想想你不想添加一些视图控制器,你是两种选择。
- 创建视图控制器没有继承BaseViewController。
- 在控制器上创建相同的方法(覆盖),方法应该是空白的。
如果你想改变文本的实时需要使用需要使用NSNotificationCenter的addObserver 见Notification center method method called multiple time ios in Tab bar (View controller)? How to remove observer?
要实现这样的, 您需要在baseviewController viewWillAppear中的方法注册观察员,并删除它viewWillDisappear方法。
在Observer方法上,您可以设置要显示的值。
这种方式消耗了大量的记忆..这已经是地方..我正在寻找替代..谢谢 – iAnurag
我应该将它添加到导航栏,而不是导航控制器? – iAnurag
您想在哪里显示信息?围绕NavigationController navigationBar标题? – Lifely
我编辑了这个问题...请检查 – iAnurag