[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的框架或隐藏它。
有没有办法实现这一切?
答案 0 :(得分:0)
如果你想让标签栏不可见,请回答:
您应该隐藏viewWill(Did)Appear
和viewDid(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文档中有关MVC
,view lifecycle
和UIViewController
的部分。