是否可以使子视图控制器的视图在选项卡栏控制器的视图上方全屏显示?


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

"self"是一个tabBarController, "redVC"是一个测试VC。我想要完整的生命周期(如viewDidAppear和旋转链)传递给childViewController(redVC),所以我使用childdvc。但是,这个方法将显示选项栏。

当把self. redvc .view放在self之上时。view,而不是addChildViewController。标签栏可以被覆盖。当使用UITabBarController时,在整个屏幕上覆盖视图。

同时,我可以在tabBarViewController的视图中添加一个透明视图,在这种情况下,tabBar应该是可见的。因此,我不想改变标签栏的框架或隐藏它。

是否有一种方法可以实现这一切?

  • 来自父视图控制器的完整生命周期传递和旋转链
  • 添加全屏视图(如果此视图是透明的,应该可以看到工具栏)
  • 不要改变或隐藏标签栏

选项卡不可见:

你只需要隐藏viewWill(Did)AppearviewDid(Will)Disappear上的标签栏就可以了。添加viewController到normal stack

你也可以直接添加modalViewController。

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

这样,您的PushViewController将具有所有视图生命周期方法(如viewDidAppear:等),并且当此控制器可见时,您的选项卡将不可见。


如果你想要标签栏可见:

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

[self.navigationController pushViewController:pushViewController animated:YES];

顺便说一句:尽量避免这样的攻击。它们在将来可能无法工作,不友好的阅读,通常倾向于显示代码不好。

你还应该重新阅读Apple文档中关于MVC, view lifecycleUIViewController的部分。

最新更新