1

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

我知道 Engadget 应用程序已设置,因此当您以纵向模式打开时,它会显示应用程序的表格视图,以及底部的控制器以访问不同的内容,例如照片,而在横向模式下,表格视图位于左侧文章的正文在右边。我只想设置它,这样如果您以纵向模式打开就没有空白页面,并且除了在导航栏上添加按钮之外,还具有查看其他页面的功能。

4

1 回答 1

0

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

-(void)viewDidLoad {

     ...

     [self addChildViewController:myTabBarController];

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

}

UIViewController将分配给您的详细视图。这行得通,我以前试过。但是,苹果是否会允许呢?我不知道!

编辑:

首先你们不应该给viewDidLoad自己打电话。

另外,我认为您不需要rootipaddetailipad只要控制器链接到 xib 文件中的 SplitViewController 即可。

在您的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.
    }
}

如果您希望每次都发生这种行为(不仅是在第一次加载时),那么请将代码添加到-(void)viewWillAppear方法中。

于 2012-06-30T21:28:14.047 回答