【问题标题】:IPHONE: After Removing / Adding Subviews in the App Delegate, Orientation Changes FailIPHONE:在 App Delegate 中删除/添加子视图后,方向更改失败
【发布时间】:2010-02-24 19:14:21
【问题描述】:

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

无论我首先加载什么视图,方向变化都会按预期发生。一旦我开始在应用程序委托中向窗口添加新视图(删除旧视图),方向变化就不再发生。假设 shouldAutorotateToInterfaceOrientation 在我所有的 UIViewControllers 中都存在 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 并且这个函数显然只在发生方向变化时被调用。

我的应用程序委托窗口总是只有一个子视图,所以我迷路了!

【问题讨论】:

    标签: iphone interface ipad orientation rotation


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2012-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多