IOS/Objective-C: закрыть контроллер представления после сообщения SLComposer

Я пытаюсь отключить контроллер представления после того, как SLComposer отправит сообщение.

Для этого я использую блок завершения в методе SLComposer следующим образом:

  [myPostSheet setCompletionHandler:^(SLComposeViewControllerResult result) {

            switch (result) {


        case SLComposeViewControllerResultCancelled:
                NSLog(@"Post Canceled");
            [self alertPostFail];
                break;
            case SLComposeViewControllerResultDone:
                NSLog(@"Post Successful");
                success = 1;
                [self dismissUnderlyingVC ];

                break;

            default:
                break;
        }
    }];

-(void)dismissUnderlyingVC {
    LogDebug(@"trying to dismiss Underlying VC");
   [self dismissViewControllerAnimated:YES completion:nil];
}

Однако, несмотря на то, что я поместил увольнение в блок завершения, он срабатывает до того, как SLComposer фактически будет отклонен, не отклоняет следующий VC и выдает следующую ошибку:

     -[myVC dismissUnderlyingVC][Line 227] [DEBUG]
 trying to dismiss Underlying VC
    2018-08-28 20:23:59.579416-0400 idaru[1772:662392]
 [core] SLComposeViewController skipping explicit 
dismiss because isBeingDismissed is already 1
    2018-08-28 20:23:59.588142-0400 
idaru[1772:662392] [core] SLComposeViewController dealloc 

Я понимаю, что у SLComposer нет делегата, поэтому мне интересно, как я могу убедиться, что он действительно был отклонен, чтобы я мог отклонить следующий VC ниже него.

Спасибо заранее за любые предложения.


person user6631314    schedule 29.08.2018    source источник


Ответы (1)


Ваш контроллер представления в настоящее время представляет файл SLComposeViewController.

Итак, когда вы звоните dismissViewControllerAnimated:completion: self, вы на самом деле просите отклонить SLComposeViewController (который уже находится в процессе увольнения).

Вместо этого попробуйте попросить presentingViewController закрыть:

[self.presentingViewController dismissViewControllerAnimated:YES completion:nil];
person Pete Morris    schedule 29.08.2018