[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)Appear
和viewDid(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 lifecycle
和UIViewController
的部分。