隐藏我的标签栏
- (void)viewDidLoad
{
[super viewDidLoad];
self.tabBarController.tabBar.hidden=YES;
}
很明显再次展示,我需要做的就是打电话
self.tabBarController.tabBar.hidden=NO;
但是我应该在哪个生命周期方法中进行此调用?在最新的iOS / Xcode中,哪些生命周期方法仍然有效,似乎存在分歧。另外,作为音响工程的问题,我想知道正确的答案:viewDidDisappear
或ViewDidUnload
或ViewDidDispose
?
答案 0 :(得分:4)
根据您想要实现的目标,在许多用例中有一个更优雅的解决方案:
<强>故事板:强>
转到要推送的视图控制器。
选中“在推送时隐藏底栏”
<强>编程:强>
在推送的viewController中:
override var hidesBottomBarWhenPushed: Bool {
get {
return true
}
set {
super.hidesBottomBarWhenPushed = newValue
}
}
答案 1 :(得分:1)
从apple doc回答你的问题
viewDidUnload [...]在iOS 6.0中已弃用。视图不再被清除 在低内存条件下,因此永远不会调用此方法。
因此在iOS 6.0中不推荐使用viewDidUnload
,self.tabBarController.tabBar.hidden=NO;
放置viewDidDisappear
的最佳位置是viewDidDisappear
,但是当视图从屏幕中删除而不是从内存中调用viewDidLoad
时它可以调用如果视图再次显示,它将不会调用tabbar
,因此在这种情况下,self.tabBarController.tabBar.hidden=YES;
将保持不被隐藏并解决您需要做两件事。
将viewWillAppear
放入viewWillLoad
而不是- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
self.tabBarController.tabBar.hidden=YES;
}
和
viewDidDisappear
并将tabbar的隐藏调用置于- (void)viewWillDisappear:(BOOL)animated {
[super viewDidDisappear:animated];
self.tabBarController.tabBar.hidden=NO;
}
viewWill/DidAppear
它会管理所有案例,而其他地方也无法安排此次调用。在某些情况下,您应始终使用viewDid/WillDisappear
和viewWillLoad
以及{{1}},因为它们是安全的如果没有不确定的条件(崩溃等),总是打电话。
答案 2 :(得分:0)
你想要实现的目标并不是很清楚,但这取决于你何时希望隐藏它。另外,要取消隐藏,您应该使用self.tabBarController.tabBar.hidden=NO;
(请注意NO
而不是YES
)。
如果我猜到你想要达到的效果,我会告诉你在viewWillDisappear
或viewDidDisappear
中实现它。