【问题标题】:UISplitview not alligned at the top拆分视图未在顶部对齐
【发布时间】:2011-09-02 15:23:11
【问题描述】:

我有一个无法解决的问题,我制作了一个在标签栏中使用 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;这使得标签从正确的位置开始。但是,这似乎不是一个合适的解决方案。

【问题讨论】:

  • 发布一些代码可能会有所帮助......而且,视图似乎向下移动了 20 个点(状态栏的高度)。
  • 似乎是这样 - 我已经添加了如何设置 splitview 控制器是否有其他代码部分可能表明问题,请回复,我也会发布
  • UserContentForPopViewController 用过笔尖吗?
  • 是的,我有 - 也许我应该尝试用 nib 文件加载它
  • 它没有做任何事情,但是我尝试在应用程序委托的应用程序 didfinishlaunch 中设置选定的选项卡 - self.tabBarController.selectedIndex = 0;这使得标签从正确的位置开始。但是,这似乎不是一个合适的解决方案。

标签: ios uisplitview


【解决方案1】:

一些指针...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];

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

【讨论】:

  • 您好,谢谢您的建议。你对代表团的看法是对的。但是,因为我在不同的选项卡中有多个 uisplitviews,所以我似乎必须以这种方式添加它们。最初的解释可能不清楚。再次感谢您的回复。
  • 等等...您是“在不同的选项卡中有多个 uisplitviews”还是相反?应该反过来。看到这个stackoverflow.com/questions/7159352/…
  • 抱歉,我在每个选项卡中都有一个 uisplitview :)
  • 所以这是你的问题......这就是为什么有 20 个点的降档。我建议你通过 this documentationsplitView 文档
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-12
  • 1970-01-01
  • 2017-01-28
  • 1970-01-01
  • 2012-05-03
  • 2012-08-05
相关资源
最近更新 更多