[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的框架或隐藏它。
是否有一种方法来实现所有这些?
发布于 2015-09-01 07:20:33
如果您想让选项卡不可见,请回答:
而不是这样的黑客,您应该只是隐藏在viewWill(Did)Appear和viewDid(Will)Disappear上的选项卡。将viewController添加到普通堆栈中。
您也可以添加modalViewController。
PushViewController *pushViewController = [[PushViewController alloc] init];
[self presentViewController:pushViewController animated:YES completion:^{}];这样,您的PushViewController将拥有所有的视图生命周期方法(如viewDidAppear:等),并且当此控制器可见时,您的选项卡将不可见。
如果您想要使选项卡可见,请回答:
在故事板(或代码)中添加UINavigationBar。
[self.navigationController pushViewController:pushViewController animated:YES];顺便说一句:尽量避免这样的黑客攻击。他们可能在未来不工作,不友好的阅读,一般倾向于表明代码是不好的。
您还应该重读苹果文档中有关MVC、view lifecycle和UIViewController的部分。
https://stackoverflow.com/questions/32325624
复制相似问题