我正在制作一个与UITabBarController类似的自定义东西 - 一个管理子ViewControllers的UIViewController。父UIViewController应该管理添加和删除子UIViewControllers的视图。
看来如果我这样做,我需要手动呼叫[UIViewController viewWillAppear]
和朋友。是这样的吗?有更好的方法吗?
答案 0 :(得分:1)
你为什么要这样做?为什么不使用UITabBarController?
无论如何......我会尝试这样的事情
- (void) selectViewControllerAtIndex:(int)index {
[[self.viewControllers objectAtIndex:self.selectedVCIndex].view removeFromSuperview];
self.selectedVCIndex = index;
[self.view addSubView:[self.viewControllers objectAtIndex:index].view];
[self.view setNeedsLayout];
}
但从未尝试过。
答案 1 :(得分:1)
也许你想用这些方法创建一个单身人士:
@interface RootViewController : UIViewController {
UIViewController *currentVC;
}
-(void) destroyCurrent;
-(void) switchToViewController: (int) controller;
-(void) switchToViewController: (int) controller {
[self destroyCurrent];
switch (controller) {
case 0:
MyViewController *viewController = [[MyViewController alloc] init];
currentVC = viewController;
break;
//case 1: ...
default:
break;
}
[self.view addSubview:currentVC.view];
}
-(void) destroyCurrent {
if (currentVC) {
[currentVC.view removeFromSuperview];
[currentVC release];
currentVC = nil;
}
}
通过调用switchToViewController: (int) controller
来更改视图控制器。