IPHONE:在App Delegate中删除/添加子视图后,方向更改失败

时间:2010-02-24 19:14:21

标签: iphone interface ipad orientation rotation

我正在使用我的应用程序委托来交换视图。首先我删除当前视图,然后添加新视图,然后运行石英动画。

无论我首先加载什么视图,方向更改都会按预期发生。一旦我开始向应用程序委托中的窗口添加新视图(删除旧视图),就不再发生方向更改。假设在我的所有UIViewControllers中都有YESAutorotateToInterfaceOrientation和YES。

我拿出石英动画,这里仍然是我被困住的地方:

-(void) showSongList {
  [songVC.view removeFromSuperView];
  navVC = [[NavigationViewController alloc] initWithNibName:0 bundle:0];
  [window addSubView:navVC.view];
  [songVC release];
  songVC = nil;
}

切换视图工作正常。第一个视图始终响应并切换方向,然后我对添加视图的窗口所做的任何更改(始终删除前一个视图)都会减少方向更改。

如果我立即加载navVC它会旋转方向,但是当它从按钮事件向下延伸时,我会得到我所描述的方向问题。

NSLog(@“subview count =%d”,[[window subviews] count]); //总是1

我尝试在didRotateFromInterfaceOrientation中使用NSLog,这个功能显然只在发生方向更改时调用。

我的应用委托窗口始终只有一个子视图,所以我迷路了!

1 个答案:

答案 0 :(得分:1)

好的,所以我想出了要做什么......我创建了一个名为SwapViewController的UIViewController并将其他视图添加到其中。

当我第一次尝试时,我认为这不起作用,因为我直接前进并以编程方式添加了UIView。但我想,鉴于UIViewController具有方向功能,需要一个视图控制器。

所以,制作一个交换视图控制器并为其添加子视图!