2013-10-11 2 views
0

Я пытаюсь уволить одного ViewController и представить вместо него другой ViewController.UIViewController rejectViewControllerAnimated не работает

Это то, что мой код выглядит

[self dismissViewControllerAnimated:NO completion:nil]; 

      //load currentProjectListViewController 
      currentProjectListViewController = [[CurrentProjectListViewController alloc] initWithNibName:@"CurrentProjectListViewController" bundle:nil]; 

       [self presentViewController:currentProjectListViewController animated:NO completion:nil]; 

однако по какой-то причине вид быстро мигает, то остается такой же и работает так же, как обычно.

Я был искажен, мой код неправильный? или есть что-то, что я должен искать где-то еще в моем коде. Если да, то на что я должен следить.

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

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

ответ

0

Я хотел бы предложить вам сделать, как следующее:

[self dismissViewControllerAnimated:NO completion:^{ 

    currentProjectListViewController = [[CurrentProjectListViewController alloc] initWithNibName:@"CurrentProjectListViewController" bundle:nil]; 
    [self presentViewController:currentProjectListViewController animated:NO completion:nil]; 

}]; 

или:

-(void)presentOtherVC { 

    currentProjectListViewController = [[CurrentProjectListViewController alloc] initWithNibName:@"CurrentProjectListViewController" bundle:nil]; 
    [self presentViewController:currentProjectListViewController animated:NO completion:nil]; 
} 

.... 

    [self dismissViewControllerAnimated:NO completion:^{ 

     [self performSelector:@selector(presentOtherVC) 
       withObject:nil 
       afterDelay:0.5f]; 

    }]; 

В самом деле, когда вы звоните dismissViewController, это займет некоторое время, чтобы иметь эффект; в вашем коде в то же время (т. е. в течение того же цикла цикла цикла) вы также просите ОС представить другой контроллер вида. Теперь, если вы читаете dismissViewControllerAnimated:completion: описания, в нем говорится (жирный шрифт моего):

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

Итак, у вас явно есть конфликт между увольнением контроллера вида и одновременным представлением нового. Это объясняет, почему все не работает, а также почему иногда они это делают. Все зависит от времени между этими противоречивыми задачами.

Если вы используете обработчик завершения dismissViewControllerAnimated, как я показал выше, вы можете обойти эту проблему.

+0

Прохладный для вашего ответа. Я только что попытался использовать ваш код кода, который просто сделал то же самое, что и раньше. Что подсказывает мне, что проблема связана с чем-то другим. Я собираюсь продолжить отладку и надеюсь, что найду что-нибудь. – HurkNburkS

+0

Я вижу ... Я уверен, что это состояние гонки в любом случае ... вы бы попробовали альтернативу, которую я опубликовал в моем отредактированном ответе? Это требует создания нового метода, но он должен работать. – sergio

+0

nope. Я просто отлаживал его снова, и, похоже, он снова возвращается к моему методу парсера перед тем, как перейти к новому методу. Я выясню, что происходит там, и посмотрим, исправляет ли это это. У меня есть этот funciton, который дозирует несколько запросов в строке, я недавно изменил это, чтобы сделать это в другом порядке. Теперь я удивляюсь, если это так ... хотя я отлаживал его и думал, что он был создан. Спасибо за вашу помощь Ill, дайте знать, как я нахожусь .. не беспокойтесь, обернитесь вокруг, я могу быть в то время как LOL, но если я прихожу к каким-то выводам, то вы здесь. – HurkNburkS

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