Допустим, в моем приложении iOS есть три ViewControllers
: A
, B
и C
.
От A
я представляю B
и назначаю A
делегатом. После выполнения действия B
я хочу отклонить B
и представить C
от A
. Однако я хочу сделать это так, чтобы A
вообще не отображалось на экране. Это мой код прямо сейчас, внутри класса A
:
-(void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
B *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"B-identifier"];
vc.delegate = self;
[self presentViewController:vc animated:NO completion:^{}];
}
Тогда это функция делегата внутри A
, которую B
вызывает при выполнении действия:
- (void) actionPerformed
{
[self dismissViewControllerAnimated:YES completion:^{
C *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"C"];
[self presentViewController:vc animated:NO completion:nil];
}];
Однако это приводит к тому, что C появляется на некоторое время (после вызова отклонения), даже несмотря на то, что я помещаю код представления в обработчик завершения отклонения. Что я могу сделать, чтобы избежать этого?