2011-05-25 52 views
2

我有具有以下结构的应用:UINavigationController的旋转问题,模态对话框

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

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

一切都运行得很好,直到你:

  1. 打开一个模式对话框
  2. 旋转到横向(或另一方向)
  3. 关闭对话框。

在这一点上,似乎UINavigationController中的底层视图没有通知一些旋转事件。

你得到的意见是这样的:

Screenshot after rotation

任何想法? 由于

+0

更新:willRotateToInterfaceOrientation没有被称为显示模态对话框时的GlobalNavigationController – 2011-05-25 18:10:10

回答

0

它原来是一个问题,导航控制器没有一个parentViewController属性集。爱无证陷阱...

简单的解决办法是在导航控制器初始化后,把这个:

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

道具PrimaryFeather为理念: Modal View Controller Won't Start in Landscape Mode

0

在您的模态视图控制器,尝试建立以下内容:

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

这发出该视图旋转到它的父,它是呈现的模式窗口的视图消息

0

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

如果问题不是代码问题,看看IB,看看如果你定义自动增长等