PresentModalViewController не работает

-(void)backAction:(id)sender
{ 
   SecondViewController *viewCtrl = [[SecondViewController alloc] init];

   [self.presentingViewController dismissModalViewControllerAnimated:NO];

   [self.presentingViewController presentModalViewController:viewCtrl animated:YES];
}

Я хочу dismissModalViewControllerAnimated текущий контроллер, а затем представить новый контроллер. Но это только dismissModalViewControllerAnimated:NO.

Зачем?


person user1292717    schedule 17.12.2012    source источник


Ответы (3)


В этой строке вы уже отклоняете контроллер представления

[self.presentingViewController dismissModalViewControllerAnimated:NO];

Затем в следующей строке вы пытаетесь установить модальное представление, используя контроллер представления, который уже был отклонен.

[self.presentingViewController presentModalViewController:viewCtrl animated:YES];

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

person Bijoy Thangaraj    schedule 17.12.2012

self.presentingViewController будет равен нулю после того, как вы уволите себя в первой строке. Так что все, что вам нужно сделать, это получить прямую ссылку на то, чем является этот контроллер, прежде чем выполнять увольнение. В следующем примере представленный контроллер представления относится к классу ViewController. Вам придется использовать тот класс, который является вашим фактическим контроллером представления представления.

-(void)backAction:(id)sender {
     ViewController *presenter = (ViewController *)self.presentingViewController; 
     SecondViewController *viewCtrl = [[SecondViewController alloc] init];

     [presenter dismissModalViewControllerAnimated:NO];
     [presenter presentModalViewController:viewCtrl animated:YES];
}
person rdelmar    schedule 17.12.2012

Может быть, вы можете попробовать это:

[self.presentingViewController dismissViewControllerAnimated:NO completion:^{
    [self.presentingViewController presentModalViewController:viewCtrl animated:YES];
}]
person Roshit    schedule 17.12.2012