根据视图控制器的显示方式,隐藏导航栏
我有一个标签栏与导航控制器在其中一个选项卡。 目前的导航控制器的根视图没有导航栏显示和很好的animation子视图
- (void)viewDidLoad { ... [self.navigationController setNavigationBarHidden:YES animated:NO]; ... }
和
- (void)viewWillAppear:(BOOL)animated { [self.navigationController setNavigationBarHidden:YES animated:YES]; } - (void)viewWillDisappear:(BOOL)animated { [self.navigationController setNavigationBarHidden:NO animated:YES]; }
但当然,改变选项卡启动viewWillAppear
函数,所以我回到导航栏滑动的根视图,而不是只是不在那里。
有没有一种方法,我可以隐藏在根视图上的导航栏,而没有animation,除了从导航堆栈上的子视图出现?
viewWillAppear:animated
上的(BOOL)animated
参数viewWillAppear:animated
。 当改变制表符时,它会变成NO
,因为animation是立即的。 另一方面,如果将它从导航堆栈按下或popup animated:YES
,那么它会显示为YES
。
虽然这看起来像一个黑客攻击,但这是正确的方法:你不需要找出谁是调用者,而是专注于事实, 如果你的视图控制器会显示animation,你有时间做自己的animation ,如果不是,拧紧它,立即显示(或在这种情况下,隐藏)一切。
尝试在UINavigationController的委托的navigationController:willShowViewController:animated:方法中显示/隐藏栏,具体取决于显示的视图控制器是否是您的根视图控制器。
如果在应用程序委托中设置布尔variables,并在子视图中将布尔值设置为0,在其他视图中将值设置为1,那么该怎么办?在您的视图中,根据variables的值,可以设置animation。