我正在使用我的应用程序委托来交换视图。首先我删除当前视图,然后添加新视图,然后运行石英动画。
无论我首先加载什么视图,方向更改都会按预期发生。一旦我开始向应用程序委托中的窗口添加新视图(删除旧视图),就不再发生方向更改。假设在我的所有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,这个功能显然只在发生方向更改时调用。
我的应用委托窗口始终只有一个子视图,所以我迷路了!
答案 0 :(得分:1)
好的,所以我想出了要做什么......我创建了一个名为SwapViewController的UIViewController并将其他视图添加到其中。
当我第一次尝试时,我认为这不起作用,因为我直接前进并以编程方式添加了UIView。但我想,鉴于UIViewController具有方向功能,需要一个视图控制器。
所以,制作一个交换视图控制器并为其添加子视图!