是否可以在tabBarController的视图上方全屏显示childViewController的视图?

时间:2015-09-01 07:12:23

标签: ios objective-c uitabbarcontroller childviewcontroller

[self addChildViewController:self.redVC];
[self.view addSubview:self.redVC.view];
[self.redVC didMoveToParentViewController:self];

“self”是tabBarController,“redVC”是测试VC。我想要将完整的生命周期(例如viewDidAppear和旋转链)传递给childViewController(redVC),所以我使用了childVC。但是,此方法将显示tabBar。

当只将self.redVC.view置于self.view之上时,而不是通过addChildViewController。 tabBar可以被覆盖。 Overlay a view over whole screen, when using UITabBarController?

同时,我可以为tabBarViewController的视图添加透明视图,在这种情况下,应该看到tabBar。因此,我不想更改tabBar的框架或隐藏它。

有没有办法实现这一切?

  • 来自父viewController的完整生命周期传递和旋转链
  • 要添加的全屏视图(如果此视图是透明的,则应该看到工具栏)
  • 请勿更改或隐藏tabBar

1 个答案:

答案 0 :(得分:0)

如果你想让标签栏不可见,请回答:

您应该隐藏viewWill(Did)AppearviewDid(Will)Disappear上的标签栏,而不是此类黑客攻击。将viewController添加到普通堆栈。

您也可以添加modalViewController。

PushViewController *pushViewController = [[PushViewController alloc] init];
[self presentViewController:pushViewController animated:YES completion:^{}];

这样,您的PushViewController将拥有所有查看生命周期方法(例如viewDidAppear:等),并且当此控制器可见时,您的标签栏将无法显示。

如果你想让tabbar可见,请回答:

在故事板(或代码)中添加UINavigationBar。

[self.navigationController pushViewController:pushViewController animated:YES];
顺便说一句:尽量避免这种黑客行为。它们可能在将来不起作用,阅读不友好,并且通常表明代码不是很好。

您还应该重读Apple文档中有关MVCview lifecycleUIViewController的部分。