如何将iPad子视图控制器添加为选项卡栏

如何将iPad子视图控制器添加为选项卡栏,ipad,uitableview,uitabbarcontroller,uisplitviewcontroller,Ipad,Uitableview,Uitabbarcontroller,Uisplitviewcontroller,我有一个应用程序,我刚刚安装了一个拆分视图控制器,可以在ipad版本的应用程序上显示博客。当前的设置是主控制器是一个表视图,用于显示博客上的不同文章,而详细控制器是一个视图控制器,其中包含一个用于显示文章内容的webview。问题是,我在应用程序中还有一些其他功能,在iPhone版本中,我使用一个选项卡栏控制器来导航。有哪些选项可以将按钮添加到细节控制器,从而允许我导航到应用程序的其他部分?我知道我无法在分割视图控制器中获得选项卡栏控制器,所以我只需要一些指导 我知道Engadget应用程序的设

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


我知道Engadget应用程序的设置是这样的,当你在纵向模式下打开时,它会显示应用程序的表格视图,底部有一个控制器,可以转到不同的东西,如照片,而在横向模式下,表格视图位于左侧,文章文本位于右侧。我只想设置它,以便在纵向模式下打开时不会出现空白页,并且除了向导航栏添加按钮外,还具有查看其他页面的功能。

您可以向SplitViewController的详细视图添加tabBarController。只需创建一个响应该控制器的UIViewController,并在该控制器的xib文件中添加一个UIAbbarController对象,并将其链接到UIViewController。在viewDidLoad中,将选项卡栏控制器添加到视图中:

-(void)viewDidLoad {

     ...

     [self addChildViewController:myTabBarController];

     //add the tabBarController view
     [self.view addSubview:myTabBarController.view];

}
此UIViewController将被指定给详图视图。这很有效,我以前也试过。然而,苹果是否会允许?我不知道

编辑:

首先,你们不应该称自己为viewDidLoad

另外,我认为只要控制器链接到xib文件中的SplitViewController,就不需要rootipad和detailipad

在RootViewiPad主机中,在其viewDidLoad中添加以下内容:


如果希望此行为在每次加载时都发生,而不仅仅是在第一次加载时,则将代码添加到-voidViewWillExample方法中

我不知道我是否想尝试一些可能最终被苹果拒绝的东西。也许更好的选择是以某种方式获取详细视图,即以纵向模式显示整个屏幕的视图,以便在发布时获取最新的文章,并在发布时显示它,而不是显示为空白?但是,我也不知道该怎么做。我不知道这是否会被苹果拒绝。。如果他们的指导方针没有严格提到不能在splitView中使用tabBarController,那么上面的说明就可以了。。对于你的另一个解决方案,它非常简单。。由于主视图控制器是tableViewController,请检查viewDidLoad上的方向,然后只需选择Rowatindexpath:animated:scrollOption:选择第一个选项即可加载详细视图。我不确定您在这里指的是什么,但我尝试了以下操作。在AppDelegate上,我将主控制器表视图设置为控制器,并告诉它在主控制器代码中运行一个方法。然后告诉此方法从索引0处的数组中选择条目。问题是,由于某种原因,解析没有发生,因此数组没有创建,并且它会崩溃,错误索引0超出空数组的界限。您可以发布有关如何创建UISplitViewController以及如何将主控制器分配给它的代码吗?当然,请参见此处查看AppDelegate。h:查看AppDelegate。m:然后我转到IB MainWindow.xib,添加了一个SplitViewController,并连接了所有连接—一切正常……可以旋转到横向,选择一篇文章,它显示在细节视图中…只希望细节视图自动加载第一个故事,这样如果用户以纵向模式打开,而不是以空白屏幕打开,他们就可以获得第一个故事。
-(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.
    }
}