2012-02-23 5 views
2

У меня есть базовый модульный контроллер. я затем создать 2-ым с:Dismiss 2 modal view controllers

FieldReportViewController *fieldReport = [self.storyboard instantiateViewControllerWithIdentifier:@"fieldReportView"]; 
[self presentModalViewController:fieldReport animated:YES]; 

оттуда, я называю 3-й контроллер представления с:

ScoutingReportViewController *scoutingReport = [self.storyboard instantiateViewControllerWithIdentifier:@"ScoutView"]; 
[self setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal]; 
[self presentModalViewController:scoutingReport animated:YES]; 

теперь я хочу вернуться к первому контроллеру представления. Я пытался (это в настоящее время показан вид контроллер):

-(IBAction)doneBtn 
{ 
    //[self.parentViewController dismissModalViewControllerAnimated:YES]; //removed 

    [self dismissModalViewControllerAnimated:NO]; //added 

    [[NSNotificationCenter defaultCenter] postNotificationName:@"CloseAllModalViews" object:nil userInfo:nil]; //added 

} 

в среднем контроллере/с видом, я добавить наблюдатель в viewDidLoad:

[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(dismissModals:) 
              name:@"CloseAllModalViews" 
              object:nil]; 

и метод:

-(void) dismissModals:(id)sender 
{ 
    [self dismissModalViewControllerAnimated:NO]; 
} 

при нажатии, он ничего не делает. он не отклоняет какие-либо мнения.

любые идеи, как я могу заставить это работать?

РЕДАКТИРОВАТЬ: выяснил, почему он рушится; я забыл, что добавил в мою игру сингл. это приводит к проблемам с памятью и вызывает крушение.

РЕДАКТИРОВАТЬ 2: это приведет к отключению обоих контроллеров представления к контроллеру базы/первого вида. однако, это не дает мне никаких анимаций. я могу уволить текущий VC без анимации и отклонить средний VC с анимацией, но я вижу среднюю VC кратко перед переходом. я предпочел бы, если возможно, анимацию от текущего VC до базового VC.

+0

нет намеков на консоли при запуске на устройстве? Любые предупреждения из xcode при его создании? –

+0

nope, нет информации об аварии в консоли, когда я запускаю ее на ipad. я заметил, что xcode 4.2 дает намного меньше ресурсов, чем предыдущие версии при сбоях. =/ – Padin215

+0

Если ваш первый диспетчер представлений был навигационным контроллером, вы можете использовать 'popToRootViewControllerAnimated:'. Как изменить его? –

ответ

0

Я сделал это раньше, и мне пришлось использовать UINotificationCenter, чтобы отклонить средние виды. Когда вы нажимаете кнопку doneBtn, отправьте уведомление. Перед тем, как вы нажмете свои другие взгляды, добавьте наблюдателя в ваш actionMouse. Если вы удалите анимацию, она должна выглядеть так, как будто вы вернулись к исходному виду.

По вашему мнению вы хотите автоматически отклонять:

[[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(dismissModals:) 
               name:@"CloseAllModalViews" 
               object:nil]; 

Помещенный это в методе doneBtn:

[[NSNotificationCenter defaultCenter] postNotificationName:@"CloseAllModalViews" object:nil userInfo:nil]; 
+0

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

+0

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

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