Модалното влизане в iOS5 вече не се стартира в XCode 4.2

Вече не мога да показвам своя контролер за изглед на Modal Login, когато приложението ми се стартира след актуализирането до XCode 4.2 и iOS5. Имам приложение с 4 раздела tabBar, което изисква първоначално влизане за използване. След надграждането той просто показва първия изглед, който трябва да се покаже след влизане - по принцип никога не зарежда контролера за модален изглед, отговорен за обработката на влизането, и отива направо към другата функционалност на приложението. Абсолютно същият код, който работи в 4.3, не работи в iOS 5 - това ме озадачи! Предпочитам да не използвам StoryBoard точно сега, тъй като това трябва да работи. Поставих viewDidLoad за първия раздел на tabBar по-долу - той влиза в оператора if, но никога не показва изгледа за влизане. Наистина ще съм благодарен, ако някой може да ми помогне! Пропускам ли нещо тук? Благодаря -

ViewDidLoad:

- (void)viewDidLoad
{

    // Call the super first
    [super viewDidLoad];

    // Only login once
    PinPointMeAppDelegate *appDelegate = (PinPointMeAppDelegate *)[[UIApplication sharedApplication] delegate];

    // It's not loading like it did pre-iOS5 - why?
    NSLog(@"LOADING VIEW %d",appDelegate.loggedInFlag);

    // Only show the login view if we aren't logged in
    if (appDelegate.loggedInFlag == 0) {

        // Initialize our view controller that handles logging in
        ModalLogin *loginView = [[ModalLogin alloc] initWithNibName:@"ModalLogin" bundle:nil];

        // Set the delegate to self
        loginView.delegate = self;

        // Animate presenting the nib "ModalPlace" modally
        loginView.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
        [self presentModalViewController:loginView animated:NO];

        // Set the flag that the modal login view is shown
        self.modalShown = 1;
    }

}

AppDelegateDidFinishLaunching:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    

    // Begin determining the User's Lat / Lon
    // Start the Location Manager to get current coordinates to determine where the mapview should zoom
    self.locationManager = [[CLLocationManager alloc] init];
    locationManager.delegate = self;
    locationManager.desiredAccuracy = kCLLocationAccuracyBest;
    [locationManager startUpdatingLocation];

    // Set the logged - in flag to 0 since we just launched
    loggedInFlag = 0;

    // Initially no alert views are shown
    alertViewShown = 0;

    // Initialize the splash screen to Not Shown
    splashScreenFlag = 0;

    // Add the tab bar controller's view to the window and display.
    [self.window addSubview:tabBarController.view];
    [self.window makeKeyAndVisible];

    // Set the delegate for the tabBarController
    tabBarController.delegate = self;

    // Un-Hide the status bar
    [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackOpaque];

    return YES;
}

person PhilBot    schedule 15.10.2011    source източник


Отговори (2)


опитайте да представите вашия модал на viewDidAppear, това трябва да го поправи.

person Oscar Gomez    schedule 15.10.2011
comment
Благодаря за отговора - направих това и той всъщност показва изгледа за зареждане сега - но не и докато всъщност не покаже за кратко другия изглед отзад, който не трябва да се вижда, докато не влезете. Така че мига изгледът, който не трябва да се вижда за около .5 секунди и след това показва правилно изгледа за влизане. Някакви идеи как да коригирам това?? - person PhilBot; 15.10.2011
comment
@Phil999 това е странно, това е, което правя и не го прави за мен, имате ли Default.png?, може да е причината да не го виждам. - person Oscar Gomez; 15.10.2011
comment
@Rob Bajorek Опитах това за моето приложение, но то ще работи само с viewDidAppear, но моето не представя поведението, за което говори OP, и първото нещо, което виждате, е модалният изглед без трептене. - person Oscar Gomez; 15.10.2011
comment
Благодаря за отговорите - опитах viewWillAppear и viewDidLoad (viewDidLoad работи в 4.3), но нито един не работи с iOS5. viewDidAppear позволи да се покаже влизането, но все още получавам много кратко трептене на изгледа зад модалното влизане, преди да се покаже изгледът за влизане. Не използвам никаква анимация за модален изглед и също така се уверих, че моят Default.png е там. Все още се опитвам да разбера това! - person PhilBot; 16.10.2011
comment
Благодаря ви, че решихте проблема ми - person Rjaibi Mejdi; 21.05.2012

Имах същия проблем, когато работех със съвместимост с iOS 5.

Както посочи Оскар, трябва да представите своя модален изглед в viewDidAppear

Освен това по подразбиране вероятно имате [window makeKeyAndVisible] във вашия AppDelegate application:didFinishLaunchingWithOptions:

Трябва да направите това повикване, след като вашият модален изглед се покаже.

Default.png ще се показва, докато не направите ключ на UIWindow и видим, така че повече да не виждате трептене.

person Raphaël Agneau de Selve    schedule 25.11.2011