为什么我的UITableView不会旋转?

时间:2009-03-25 05:33:11

标签: iphone cocoa-touch uitableview

在Interface Builder中,我有以下

UIViewController
-- View
---- TableView

在我的UIViewController中,我已经设置了

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    return YES;
}

我还有IB中的其他视图控制器。我在这里错过了什么?我可以让它旋转的唯一方法是使用变换方法。

4 个答案:

答案 0 :(得分:3)

你是否在任何机会使用基于标签的应用程序中的tableview?如果您是,如果标签栏控制器的所有视图控制器都支持横向模式,则只能获得支持横向模式的视图。

除此之外,我认为你的观点不支持横向模式的任何理由。

答案 1 :(得分:1)

问题在于自动调整设置。更具体地说,在Interface Builder中,确保单击自动调整大小,然后在大小检查器中,确保tableview所有它的表视图的超级视图在顶部,左侧,右侧填充红色箭头,并选择两个内部箭头。

我想知道提问者是否确实在主视图的子视图中有了表视图。我在视图层次结构中更深层次的表视图中看到了这种行为:

  • 主视图
    • 子视图
      • 表格视图

默认情况下,主视图的自动调整箭头设置正确,但如果添加其他视图,则不会。

回答有关多个视图控制器问题的问题:请注意,UIViewController不是UIView的委托。事实上,事件链看起来是另一种方式 - 首先系统看到自动旋转并告诉UIViewControllers它。如果UIViewControllers的shouldAutoresize返回yes,则UIViewControllers会调整其主视图的大小。如果设置正确,主视图的大小调整可以自动调整其子视图的大小。

根据Apple文档,您不应该有多个视图控制器控制视图的不同部分 - 例如,在主视图的子视图中的表视图的单独的tableview控制器 - 因为它与事件链混淆 - 你可以看到这是怎么回事。不知道这是否有用。

答案 2 :(得分:0)

我刚试过这个,它按预期工作。我想你需要提供更多细节。根据我的经验,当视图“失败”旋转时,这是因为某个视图控制器在某处告诉它不要。检查以确保所有视图控制器都从shouldAutorotateToInterfaceOrientation返回正确的值:

答案 3 :(得分:0)

如果你正在使用故事板,你的VC包含一个UITableview,检查你的场景是否取消选中AutoLayout。