2011-10-20 25 views
4

我开始在iPad的横向我的应用程序。一个导航控制器持有我的tableVC我点击一个单元格,我们将一个新的VC推入堆栈。这工作正常。问题是,当我按导航控制器上的标准“返回”按钮时,我的应用程序被强制为纵向,并且我的tableVC不在屏幕上。我没有手动定位视图。如果我以纵向模式启动应用程序,则不会发生这种情况。iOS的iPad开始风景,推VC,popVC,视图定位不好

如何解决这种异常行为?

注意:如果有问题,应用程序中还会出现一个标签栏。

经过进一步测试,如果我在纵向加载NavController(第一个视图是表视图),然后将其切换到横向,然后选择单元格,然后按回,它工作正常。所以这个问题只会发生,如果我在横向启动应用程序,并永远不会把它变成肖像。

EVERY VC has shouldAutoRotate set to return YES。我已经划分了标签栏并完成了相同的操作。我想知道这是否是一个错误。也许问题在于,我为iPhone创建了现有的.XIB文件及其视图,然后复制并粘贴了它们,然后删除了iPhone特定的视图,然后添加了iPad视图。

+0

您是否实现了shouldAutorotateToInterfaceOrientation:在每个视图控制器中? – jluckyiv

+0

我的应用程序中的每个VC都实现了并返回yes。有什么具体的我需要做的NavController? – spentak

+0

所有视图控制器必须支持旋转。包括标签控制器,这很可能是问题的根源。 –

回答

0

也许你可以创建一个新的和简单的iPad应用程序,只需一个tabbarcontroller导航控制器和2个viewcontrollers来测试原因是不是回收的iPhone .XIB文件。你可以Command + Shift + F在整个项目中搜索“:UIViewController”来仔细检查每个VC是否已将shouldAutoRotate设置为返回YES,以防您的应用程序中的第三方代码具有子类它的UIViewController。 (搜索将返回从UIViewController继承的头文件列表)。

我曾经遇到类似的问题,通过删除.XIB文件并重新修复它,修复了一些非常奇怪的行为。

祝你好运查找问题=)

+0

所以我只是做了你所做的,并删除XIB文件和重新创建它们。显然这是一个XCode错误。经验法则,不要将iPhone XIB文件转换为iPad – spentak

1

如果你的子类的TabBar控制器返回是的,和你的风险投资为shouldAutoRotate返回肯定的,那么问题的关键在于你的厦门国际银行文件中。虽然你的解释听起来像你所推荐的VC不会返回yes,但你已经声明它确实如此,所以它必须是xib文件。

在IB中,尝试将xib视图的默认方向设置为横向,清理 - 构建并运行。

这可能会提供一两个线索。

+0

您应该确保您的所有视图都具有“autoresizes subviews”属性。 –