容器的ViewController与iPad应用程序上的单个自定义ViewController

|| 我正在将现有的iPhone应用程序转换为iPad应用程序。 iPhone应用程序是使用容器视图控制器(UINavigationController)构建的,该容器首先向用户提供了一个自定义视图控制器(UITableViewController),该视图控制器根据行选择推送了一个自定义视图控制器(UIViewController)。 在iPad应用程序中,我直接向用户展示自定义UIViewController(带有NO容器控制器),然后允许通过UIPopoverController选择不同的选项。在myAppDelegate.m中,我只是使用以下方法将自定义UIViewController添加到窗口中:
[window addSubview:[myCustomViewController view]];
在myCustomViewController.m中,我通过在viewWillAppear中注册方向更改通知来根据设备旋转程度严重修改视图:
-(void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(didRotate:)                                                  name:@\"UIDeviceOrientationDidChangeNotification\" object:nil];
}
然后,我在didRotate:方法中测试方向,并得到非常奇怪的结果。只是加载视图就被调用了三次吗?它似乎也正在报告与视图的上一图相对应的方向?
- (void) didRotate:(NSNotification *)notification
{   
    if (self.interfaceOrientation == UIInterfaceOrientationPortrait) {
        NSLog(@\"Portrait\");
    } else if (self.interfaceOrientation == UIInterfaceOrientationLandscapeLeft || self.interfaceOrientation == UIInterfaceOrientationLandscapeRight) {
        NSLog(@\"Landscape\");
    }
}
我在阅读文档,似乎将子视图添加到窗口(没有容器类)不会导致viewWillAppear:方法被调用,但就我而言,它似乎正在被调用,只是不可靠。 我应该为此应用程序使用其他模式吗?我只是想加载一个自定义视图并使用两个弹出框控制器(没有其他导航)? -德里克 btw-如果我将自定义viewController推送到我的应用程序委托中的UINavigationController上,它将完全正常工作。我只是不需要此应用程序的导航控制器。     
已邀请:
在我正在开发的应用程序中,我首先拥有一个属性来确定设备是否为iPad:
- (BOOL)iPad {

    return UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad ? YES : NO;
}
然后,您可以使用以下视图委托方法。
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {

if (self.iPad) {
    if (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft || 
        toInterfaceOrientation == UIInterfaceOrientationLandscapeRight) {
    //do some stuff 
    }   
} 希望这可以帮助。     

要回复问题请先登录注册