最靠谱的方法就是直接设置navigationBar的ShadowImage和BackgroundImag:
隐藏:
在当前导航控制器的所有子控制器页面看到的导航栏都没有分割线。
[self.navigationController.navigationBar setShadowImage:[UIImage new]];
[self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];
显示:
[self.navigationController.navigationBar setShadowImage:nil];
[self.navigationController.navigationBar setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault];