JLHideNavigationBar 0.0.1

JLHideNavigationBar 0.0.1

wangjunling 维护。



  • junling

JLHideNavigationBar

如何使用?

  1. 通过CocoaPods使用

    在Podfile文件中添加如下代码

    pod 'JLHideNavigationBar'

  2. 可以直接将代码仓库下载到本地,并添加到项目中

有什么作用?

在项目中,我们经常遇到需要隐藏导航栏的页面。之前,我们直接使用 setNavigationBarHidden:animated: 方法去隐藏导航栏,这样做有一个问题,就是再离开页面的时候,在viewWillDisappear方法中将导航栏添加上,正常情况下这样做是没有问题的。但是,遇到如下情况可能就会有问题

A(无导航页面) -> B(无导航) -> C(有导航)

在页面A的viewWillDisappear中将导航显示,在B的viewWillAppear中将导航隐藏,在从B返回到A的过程中,也会先显示后隐藏,这时候就会出现问题。因为在从B返回A的过程中,实际上不需要显示导航栏。那么,如何解决这个问题呢?首先想到的肯定是在viewVillDisappear中能够判断上一个页面或下一个页面是否需要导航栏,这样就能解决这个问题。然后,按照这个思路,开始将A页面是否需要显示传递给B,C的状态也应该传递给B。这样又会导致另一个问题出现,就是B需要知道所有与B有关联页面的导航状态,这样的代码肯定是反人类的,因为ABC可能是三个不同的人编写的。在实际项目中,协作这件事将会变得很困难。

通过以上分析,如果我ABC每个控制器都有一个可以控制自己导航显示与否的属性,并且需要在适当的地方自动调用一次,那不是就能完美解决这个问题了吗?

因此,自然而然地就出现了此库。为每个控制器添加一个属性,并在适当的时候调用它,实现的效果就是,因为默认情况下是不隐藏导航栏的,所以只需要在需要隐藏导航栏的控制器中设置隐藏与否即可完美解决问题!