2011-04-15 61 views
1

我发生了一件非常奇怪的事情。在我的应用程序委托中,我调用了presentModalViewController:在UITabBarController上显示实现loadView以显示图像的自定义类(LoadingViewController)。当我在模拟器中对iOS 4.x设备(iPhone或iPad)进行测试时,它在任何方向都能正常工作。但是,当我测试3.2版iPad时,如果方向是纵向,它只能正常工作。如果是风景,则不会返回presentModalViewController:方法。 loadView和viewDidLoad方法被调用,但viewWillAppear:和viewDidAppear:方法不被调用。presentModalViewController:不返回

任何想法?

下面是LoadingViewController为的loadView代码:

- (void) loadView 
{ 
    CGRect mainScreenBounds = [UIScreen mainScreen].bounds; 

    UIImageView * loadingImageView = [[UIImageView alloc] initWithFrame: mainScreenBounds]; 

    loadingImageView.autoresizesSubviews = YES; 
    loadingImageView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 

    NSString * splashImageName = [self getSplashImageName: [UIDevice currentDevice].orientation]; 
    loadingImageView.image = [UIImage imageNamed: splashImageName]; 

    UIActivityIndicatorView * spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle: UIActivityIndicatorViewStyleWhiteLarge]; 
    CGRect spinnerFrame = spinner.frame; 

    spinnerFrame.origin.x = (mainScreenBounds.size.width - spinnerFrame.size.width)/2; 
    spinnerFrame.origin.y = mainScreenBounds.size.height * 0.7f; 

    spinner.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin 
          | UIViewAutoresizingFlexibleRightMargin 
          | UIViewAutoresizingFlexibleTopMargin 
          | UIViewAutoresizingFlexibleBottomMargin; 
    spinner.frame = spinnerFrame; 
    spinner.hidesWhenStopped = YES; 

    [spinner startAnimating]; 

    [loadingImageView addSubview: spinner]; 

    // Add a label indicating we are working so the user knows what we are doing. 
    UIColor * textColor = [UIColor blueColor]; 

    CGRect labelFrame = loadingImageView.frame; 
    labelFrame.size.height = 40; 
    labelFrame.origin.y = spinnerFrame.origin.y - 100; 
    UILabel * workingLabel = [[UILabel alloc] initWithFrame: labelFrame]; 
    workingLabel.font    = [UIFont systemFontOfSize: 18.0]; 
    workingLabel.textColor  = textColor; 
    workingLabel.backgroundColor = [UIColor clearColor]; 
    workingLabel.textAlignment = UITextAlignmentCenter; 
    workingLabel.text    = NSLocalizedString(@"Searching for location...", @"Searching for location..."); 
    workingLabel.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin 
            | UIViewAutoresizingFlexibleRightMargin 
            | UIViewAutoresizingFlexibleTopMargin 
            | UIViewAutoresizingFlexibleBottomMargin 
            | UIViewAutoresizingFlexibleWidth 
            | UIViewAutoresizingFlexibleHeight; 

    [loadingImageView addSubview: workingLabel]; 
    [workingLabel release]; 

    [spinner release]; 

    self.view = loadingImageView; 
    [loadingImageView release]; 
} 

回答

0

我们最终的解决方案是根本不使用presentModalViewController,而是将LoadingViewController设置为根视图控制器。显然这不是一个完整的解决方案,但幸运的是,它对我们来说足够好。有什么令人沮丧的是不知道为什么presentModalViewController现在无法正常工作,当它在我们的应用程序的先前版本中正常工作时。我们已经做了一些破坏它的事情。

0

在使用presentModalViewController.此外,在景观带的UITabBarController使用presentModalViewController时有一个与IOS 3.2一个问题的UITabBarController应该是RootViewController的,如果所有它的viewcontrollers不要” t覆盖shouldAutorotateToInterfaceOrientation并且为横向返回yes,则会导致presentModalViewController挂起。

相关问题