模态对话框的UINavigationController旋转问题

时间:2011-05-25 17:54:02

标签: iphone uinavigationcontroller modal-dialog landscape

我有一个具有以下结构的应用程序:

UIWindow
   -- GlobalNavigationController.view (subclasses UIViewController)
      -- UIView
      -- UINavigationController.view

GlobalNavigationController将所有旋转和生命周期事件(viewWillAppear,willRotateToInterfaceOrientation等)转发给导航控制器。

一切都很顺利,直到你:

  1. 打开模态对话框
  2. 旋转到横向(或其他方向)
  3. 关闭对话框。
  4. 此时,似乎UINavigationController中的基础视图未被告知某些旋转事件。

    你会得到这样的观点:

    Screenshot after rotation

    有什么想法吗? 感谢

3 个答案:

答案 0 :(得分:0)

在模态视图控制器中,尝试设置以下内容:

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
    [self.parentViewController didRotateFromInterfaceOrientation:fromInterfaceOrientation];
}

这将发送视图旋转到其父级的消息,该父级是呈现模式窗口的视图

答案 1 :(得分:0)

我遇到了与我正在处理的应用程序类似的问题。事实证明,我的问题是我没有正确指定我的控制(例如顶部工具栏)如何增长和拉伸。

如果问题不是代码问题,请查看IB并查看是否已定义自动增长等。

答案 2 :(得分:0)

事实证明导航控制器没有设置parentViewController属性。喜欢无证的陷阱......

简单的解决方案是在导航控制器初始化之后放置它:

[_navigationController setValue:self forKey:@"_parentViewController"];

支持PrimaryFeather的道具: Modal View Controller Won't Start in Landscape Mode