在选项卡栏中嵌入主详细视图控制器

时间:2013-07-07 15:30:39

标签: ios objective-c ipad uisplitviewcontroller uistoryboard

我目前有一个MasterDetail视图应用,我想添加一个标签栏。我已成功将标签栏添加到Master tableview,并且我将表视图设置为另一个标签。这是有效的,但我的问题是:

如果我想在另一个标签上有另一个MasterDetail View,我会将SplitView控制器添加到标签栏控制器吗?或者我只是添加一个表视图控制器,将其大小调整为Master,然后添加UIView并将其调整为详细信息并通过segue推送所有数据?

可能是一个愚蠢的问题,但我还没有看到任何答案。

*的 修改 *

到目前为止,这是我的AppDelegate.m的内容:

#import "AppDelegate.h"
#import "LeftViewController.h"
#import "RightViewController.h"

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    UISplitViewController *splitViewController = (UISplitViewController   *)self.window.rootViewController;
    UINavigationController *leftNavController = [(UITabBarController *)splitViewController.viewControllers[0] viewControllers][0];
    LeftViewController *leftViewController = (LeftViewController *)[leftNavController topViewController];
    UINavigationController *rightNavController = [splitViewController.viewControllers objectAtIndex:1];
    RightViewController *rightViewController = (RightViewController *)[rightNavController topViewController];

    Player *selectedPlayer = [[leftViewController players]objectAtIndex:0];
    [rightViewController setPlayer:selectedPlayer];

    leftViewController.delegate = rightViewController;
    return YES;
}

- (void)applicationWillTerminate:(UIApplication *)application
{
    // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
}

@end

1 个答案:

答案 0 :(得分:0)

您的UITabBarController应该是应用中的根视图控制器,然后每个标签栏viewControllers可以是UISplitViewController或任何适合您需要的标签栏。

我会给你看一个故事板的图片,但是它上面有很多内容可以告诉你发生了什么!

希望有所帮助。

- 更新 -

它不一定非常容易,但你应该能够以最少的工作完成你的目标。可以移动视图控制器,而无需重做应用程序。请参考以下示例,看看它是否有帮助。基本上,您需要UITabBarController作为根视图控制器,并且可以将拆分视图添加到其中:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // Override point for customization after application launch.

    self.tabController = [[UITabBarController alloc] init];

    self.splitView = [[UISplitViewController alloc] init];

    self.tabController.viewControllers = @[self.splitView];

    self.window.rootViewController = tabController;

    return YES;
}

显然你的代码会有所不同,但这个基本的例子应该让你朝着正确的方向前进。