0

我有一个我无法弄清楚的问题,我制作了一个在标签栏中使用 UIsplitview 的应用程序。我一直在实现不同的选项卡,但是现在当我处理第一个选项卡时 - UIsplitview 在横向模式下未对齐。你们有什么建议吗 - 如果我从纵向开始并转到横向,那么就没有问题了。

在此处输入图像描述

更新:我不会在任何地方对帧进行任何初始化,并且我已经在 IB 中检查了尺寸等。下面显示了我如何在应用程序委托中添加 uisplitview 控制器。这样做是因为我想要一个标签栏控制器中的拆分视图。当我添加了 spilview 时,我只是在 IB 中设置了主视图和详细视图。有点神秘。

if (index == 2) {

        detailViewController = [[DetailUserCreatorViewController alloc] initWithNibName:@"DetailUserCreatorView" bundle:nil];

        userContent=[[UserContentForPopViewController alloc]init];

        userContent.userDetails=detailViewController;

        detailViewController.delegate=userContent;

        //rootViewController.navigationItem.title = @"List";
        UINavigationController *nav = [[[UINavigationController alloc] initWithRootViewController:userContent] autorelease];

        splitViewController = [[UISplitViewController alloc] init];
        splitViewController.tabBarItem = controller.tabBarItem;
        splitViewController.viewControllers = [NSArray arrayWithObjects:nav, detailViewController, nil];

        splitViewController.delegate = detailViewController;

        [controllers replaceObjectAtIndex:index withObject:splitViewController];
    }

更新:我试图在应用程序委托的应用程序 didfinishlaunch 中设置选定的选项卡 - self.tabBarController.selectedIndex = 0; 这使得标签从正确的位置开始。但是,这似乎不是一个适当的解决方案。

4

1 回答 1

0

一些指针...splitViewController 需要添加为窗口的子视图:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    

[window addSubview:splitViewController.view];
[window makeKeyAndVisible];

return YES;
}

以下代码不正确。您不应将 viewController 分配给委托。

splitViewController.delegate = detailViewController;

您也不需要这行代码:

[controllers replaceObjectAtIndex:index withObject:splitViewController];

以下行处理分配代表的那部分。

splitViewController.viewControllers = [NSArray arrayWithObjects:nav, detailViewController, nil];

另外,如果您可以上传您的代码,我会尝试更正它并回发原因和更正的代码...

于 2011-09-02T07:23:11.313 回答