如何添加iPad子视图控制器以像Tab栏一样工作

时间:2012-06-30 21:13:34

标签: ipad uitableview uitabbarcontroller uisplitviewcontroller

我有一个应用程序,我刚刚安装了一个拆分视图控制器,以显示应用程序的ipad版本上的博客。当前设置是主控制器是一个表格视图,用于显示博客上的不同文章,而详细控制器是一个视图控制器,其中包含用于显示文章内容的webview。问题是我在应用程序中有一些其他功能,在iPhone版本上,我使用标签栏控制器进行导航。向细节控制器添加按钮的哪些选项可以让我导航到应用程序的其他部分?我知道我无法在Split View Controller中获得Tab Bar Controller,所以我只需要一些指导。

我知道Engadget应用程序已设置为当您以纵向模式打开时,它会显示应用程序的表格视图,以及底部的控制器以转到照片等不同的内容,而在横向显示时,表格视图为在左边,文章的文字在右边。我只是希望它设置为没有空白页面,如果你在纵向模式下打开,并且有一个功能来查看其他页面,除了只是添加按钮到导航栏。

1 个答案:

答案 0 :(得分:0)

您可以将tabBarController添加到SplitViewController的详细信息视图中。只需创建一个响应UIViewController的{​​{1}},并在该控制器的xib文件中添加一个<UITabBarControllerDelegate>对象并将其链接到您的UIViewController。在UITabBarController中,将标签栏控制器添加到视图中:

viewDidLoad

-(void)viewDidLoad { ... [self addChildViewController:myTabBarController]; //add the tabBarController view [self.view addSubview:myTabBarController.view]; } 将分配给您的详细信息视图。这工作,我以前尝试过。但是,苹果是否会允许它?我不知道!

修改

你们中的第一个人不应该自己打电话给UIViewController

此外,只要控制器链接到xib文件中的SplitViewController,我认为您不需要viewDidLoadrootipad

detailipad(主要)中,在RootViewiPad

中添加以下内容
viewDidLoad

如果您希望每次都发生此行为(不仅在首次加载时),请将代码添加到-(void)viewDidLoad { ... if (self.interfaceOrientation == UIInterfaceOrientationPortrait || self.interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown) { //select the first row to load [self.tableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] animated:NO scrollPosition:UITableViewScrollPositionNone]; //NOTE, I'm assuming that selecting the cell will load the detail view. //if that is not the case, you need to do what ever you need to load the //detail view. } } 方法中。