【发布时间】:2012-04-13 15:51:08
【问题描述】:
-(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);
【问题讨论】:
-
我没试过,但
[self presentModalViewController:navCon animated:YES];有什么用吗? (通常你想展示“拥有”的控制器。)
标签: objective-c uisplitviewcontroller modalviewcontroller presentmodalviewcontroller