2016-07-14 1 views
1

Итак, в моем приложении я получаю пустые экраны между навигацией на контроллерах. Я полагал, что виновником является rejectViewControllerAnimated. Таким образом, в одном месте я изменил это ниже код -ОтклонитьViewControllerAnimated вызвать черный экран ios объектив c

[vc dismissViewControllerAnimated:YES completion:^() { 
     BCDThankYouViewController *thankuView=[[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"ThankyouView"]; 
     [[self topViewController ]presentViewController:thankuView animated:YES completion:nil]; 
    }]; 

С этим ниже код -

[vc dismissViewControllerAnimated:YES completion:nil]; 
BCDThankYouViewController *thankuView=[[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"ThankyouView"]; 
      [[self topViewController ]presentViewController:thankuView animated:YES completion:nil]; 

Где Ус -

UIViewController *vc = self.presentingViewController; 
    while (vc.presentingViewController) { 
     vc = vc.presentingViewController; 

    } 

И это сработало. Но в какой-то другой части моего приложения у меня есть код, как это ниже -

[weakPresentingViewController dismissViewControllerAnimated:_animateClosingModal completion:^{ 
      [weakSelf handleDelayedLoginActions:userInfo withPortfolio:portfolio]; 
     }]; 

Я изменил его -

[weakPresentingViewController dismissViewControllerAnimated:_animateClosingModal completion:nil]; 
      [weakSelf handleDelayedLoginActions:userInfo withPortfolio:portfolio]; 

Но все-таки я вижу пустой экран перед моей следующей загрузки страницы. В этом вышеприведенном фрагменте кода weakPresentingViewController is

id __weak weakSelf = self; 
    UIViewController * __weak weakPresentingViewController = (UIViewController *)_loginManagerDelegate; 

Пожалуйста, дайте мне знать, что здесь не так? Почему я получаю черный экран перед загрузкой страницы?

ответ

0

Для первого представления диспетчера представления требуется время.

После того, как вы поместили код в блок увольнения, это означает, что после прекращения анимации завершена презентация начинается, и, как мы знаем, время представления требует времени, поэтому в ключевом окне отсутствует контроллер вида , наверняка вы увидите черный экран.

Когда вы выставляете код из блока увольнения, код будет вызываться один за другим, но у увольнения есть анимация, которая длится очень короткое время, поэтому при анимации увольнения код представления представления контроллер запускается, поэтому после очень короткого времени анимации увольнения мы теперь видим экран за уклоненным контроллером представления, после чего представление выполняется, поэтому вы не можете видеть черный экран.

Но я должен сказать, что даже мы не получим черный экран, это не значит, что код хорош.

На мой взгляд, гораздо лучше сделать лучший рабочий процесс для приложения, например, подарок, увольнение, push, pop и т. Д., Чтобы избежать пустого контроллера корневого представления в окне ключа.

Смежные вопросы