场合:
我在ViewControllers
中嵌入了一些NavigationBar
(所有TabBarController
)。我有一个特定的ViewController
( VC1 ),我不想显示TabBar
。在那里,您可以转到另一个特定的ViewController
( VC2 ),其中TabBar
需要再次显示。
我的解决方案:
VC1
self.hidesBottomBarWhenPushed
默认设置为true
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
self.hidesBottomBarWhenPushed = false
}
override func viewWillDisappear(animated: Bool) {
self.hidesBottomBarWhenPushed = true
}
VC2
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
self.hidesBottomBarWhenPushed = true
}
override func viewWillDisappear(animated: Bool) {
self.hidesBottomBarWhenPushed = false
}
到目前为止一切顺利。这似乎有效,但您可以从 VC2 (具有不同内容的相同控制器)推送另一个 VC1 ,当然还可以从<推送另一个 VC2 强> VC1 再次等等。
问题:
答案 0 :(得分:2)
仅自定义VC1
public void printdt(DataTable dt) {
int counter1 = 0;
int counter2 = 0;
string temp = "";
foreach (DataRow dataRow in dt.Rows) {
foreach (var item in dataRow.ItemArray) {
temp += " ["+counter1+"]["+counter2+"]"+ item +", ";
counter2++;
}
counter1++;
logger.Debug(temp);
temp = "";
counter2 = 0;
}
}
这是更简单的架构
答案 1 :(得分:1)
不要将逻辑放在viewWillDisappear
或prepareForSegue
中,因为您不知道即将呈现的视图控制器需要什么样的行为。将逻辑放在viewWillAppear
内。
让每个ViewController处理自己想要的行为,不要试图预测目标需要什么。特别是因为您并不总是知道viewWillDisappear
或prepareForSegue
的原因是什么 - 因此您无法做出相应的反应。
答案 2 :(得分:0)
尝试在所需的VC中更改属性:
self.navigationController.toolbarHidden = YES;
答案 3 :(得分:0)
在viewWillApear中尝试使用隐藏或取消隐藏的代码,它会正常工作。
对于VC1: - 在此您需要始终隐藏然后添加此代码
override func viewWillAppear(animated: Bool) {
self.tabBarController?.tabBar.hidden = true
}
对于VC2: - 在此您需要始终显示然后添加此代码
override func viewWillAppear(animated: Bool) {
self.tabBarController?.tabBar.hidden = false
}