1
我正在做一個自定義UIViewController持有子視圖控制器。它們被放在主視圖控制器內這種方式:貪婪的UITabBarController?
- (void) setHeaderViewController:(UIViewController *)vc
{
[self setViewController:vc isHeader:YES];
_headerViewController = vc;
}
- (void) setDetailViewController:(UIViewController *)vc
{
[self setViewController:vc isHeader:NO];
_detailViewController = vc;
}
- (void) setViewController:(UIViewController*) viewController isHeader:(BOOL)isHeader
{
UIViewController* viewControllerRef = ((isHeader) ? _headerViewController : _detailViewController);
if(viewControllerRef == viewController)
return;
const CGSize selfSize = self.view.frame.size;
CGRect viewFrame;
if (isHeader)
{
viewFrame = CGRectMake(0, 0, selfSize.width, 150);
}
else
{
viewFrame = CGRectMake(0, 150, selfSize.width, selfSize.height-150);
}
UIView* viewControllerView = viewController.view;
[viewControllerView setFrame:viewFrame];
[viewControllerView setAutoresizingMask:(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight | ((isHeader) ? UIViewAutoresizingFlexibleBottomMargin : UIViewAutoresizingFlexibleTopMargin))];
[self.view addSubview:viewControllerView];
}
如果我把2個UIViewControllers每個子視圖控制器槽的內部,在該方法中定義的尺寸被推崇。然而,把一個的UITabBarController時,它變得貪婪,佔據了整個空間:
UIViewController *vc = [[WIFCustomerDetailHeaderViewController alloc] initWithNibName:@"WIFCustomerDetailHeaderViewController" bundle:nil];
[self setHeaderViewController:vc];
UIViewController *vc1 = [[UIViewController alloc] init];
vc1.title = @"Personal Data";
vc1.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"Personal Data" image:nil tag:0];
vc1.view.backgroundColor = [UIColor redColor];
vc1.view.frame = CGRectMake(0,400,100,100);
UIViewController *vc2 = [[UIViewController alloc] init];
vc2.title = @"Diagnosis";
vc2.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"Diagnosis" image:nil tag:0];
vc2.view.backgroundColor = [UIColor purpleColor];
vc2.view.frame = CGRectMake(0,500,50,50);
NSArray *tabs = [[NSArray alloc] initWithObjects:vc1, vc2, nil];
WIFCustomerDetailTabViewController *tvc = [[WIFCustomerDetailTabViewController alloc] init];
[tvc setViewControllers:tabs];
[self setDetailViewController:tvc];
有誰知道什麼可以在這裏發生了什麼?我找不到原因...
圖像以下..
此外,您沒有實現視圖控制器遏制。您還必須維護視圖_controller_層次結構,而不是隻添加子視圖。 – jrturton
使視圖控制器只能是根視圖控制器有什麼意義?這打破了他們的所有效用。不明白原因。 在這種情況下應該怎麼做?你能給我你的意見嗎? –
那麼,肯定不是所有**的實用程序,因爲有多少應用程序已將它們用作窗口的根控制器。 (我不知道原因,儘管我可以想象用嵌套標籤欄控制器可以創建的那種UI混亂。)我不確定你應該做什麼,但可能會讓你的標題/細節標籤欄控制器的控制器的孩子會工作。 –