viewDidAppear контроллера корневого представления iOS: вызывается, пока заставка (Default.png) все еще на экране - PullRequest
3 голосов
/ 29 апреля 2011

В моем приложении для iOS я хочу выполнить серию операций в моем Root View Controller после того, как он уже появился на экране. Однако кажется, что приложение iOS вызывает viewDidAppear, в то время как заставка (то есть показывает изображение Default.png) все еще на экране и до того, как корневой контроллер представления выложен на экран. Я пробовал тот же код в viewDidLoad, и у меня была та же проблема. Как я могу заставить код работать только после того, как на экране появится контроллер корневого представления?

Ответы [ 2 ]

2 голосов
/ 30 июня 2011

Я только что столкнулся с очень похожей проблемой, в которой я хотел отобразить модальное представление входа в систему после загрузки моего корневого контроллера представления. Раньше я использовал viewDidAppear, но при обновлении до iOS 4.3 SDK поведение нарушилось.

Я исправил это, вызвав селектор на моем корневом контроллере представления из селектора application:didFinishLaunchingWithOptions: делегата приложения. Использование задержки, как и в другом ответе, немного затруднительно и, вероятно, не совсем надежно.

В yourAppDelegate.m:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    
    // Add the view controller's view to the window and display.
    [self.window addSubview:viewController.view];
    [self.window makeKeyAndVisible];

    // Invoke operations here. For example, show login view:
    [viewController showModalLoginView];

    return YES;
}
2 голосов
/ 29 апреля 2011

в viewdidload используйте это

[self performSelector:@selector(loadData) withObject:nil afterDelay:.5];

, а затем используйте свой код внутри метода loaddata ...

...