0
-(void)reviewClicked:(id)sender
{
    ReviewViewController *newView = [[ReviewViewController alloc] init];
    newView.delegate = self;
    UINavigationController *navCon = [[UINavigationController alloc] initWithRootViewController:newView];
    [self presentModalViewController:navCon animated:YES];
}

我有一个 splitViewController 设置,这可能会导致一些问题。在详细视图控制器中,我有一个按钮,单击该按钮会调用上述代码。

目标是从屏幕底部向上滑动视图,以便用户查看他们的选择,然后单击按钮返回到原始详细视图。此代码有效,您可以在模式视图和原始详细视图之间来回单击。

问题是,在它向上滑动屏幕后,它继续滑过它应该停止的位置,最后停止了 10-15 像素。基本上,这个模态视图会向上滑动,以至于很大一部分视图超出了屏幕顶部。同时,相同数量的空间是屏幕底部的“空白黑色空间”,进一步表明视图只是向上移动得太远了。

使事情复杂化的是,它在横向模式下滑动得很好。

所以问题是,有谁知道为什么会出现这个错误以使模态视图向上滑动太远并超过屏幕顶部?

-=-=-=-=-=-=-

编辑:对不起,我打算在那个地方输入 navCon。我把它固定在上面。

-=-=-=-=-=-=-

解决方案:

-(void)reviewClicked:(id)sender
{
    ReviewViewController *newView = [[ReviewViewController alloc] init];
    newView.delegate = self;
    UINavigationController *navCon = [[UINavigationController alloc] initWithRootViewController:newView];
    navCon.view.frame = CGRectMake(0, 0, 768, 1080);
    [self presentModalViewController:navCon animated:YES];
}

经过一些试验和错误,我意识到我从未真正设置过视图的框架!一个如此简单的解决方案......我一直在运行包含 .xib 文件的示例,并且由于这些文件自动创建了框架,我完全忽略了它!

请记住,任何人在未来看到这个。此框架仅适用于纵向模式。如果您想要横向模式,只需相应地修改框架:

navCon.view.frame = CGRectMake(0, 0, 1080, 768);
4

1 回答 1

0

尽管我已经找到了问题中描述的问题的快速解决方案。事实是,仍然存在许多问题。经过进一步检查,我呼吁 appDelegate 调用这些方法:

[self.splitViewController presentModalViewController:navCon animated:YES];
[self.splitViewController dismissModalViewControllerAnimated:YES];

基本上,我让根视图类调用模态视图,它解决了我的所有问题。显然,从 splitview 的详细视图中调用模态视图与从根视图(恰好是 splitViewController)调用模态视图不同。我希望这对将来的任何人都有帮助。干杯。

-=-=-=-=-=-=-=-

有关更多参考,请参阅我偶然发现的这篇文章:

UISplitViewController - 推送模态视图

于 2012-05-30T15:23:58.670 回答