2016-02-22 4 views
0

У меня есть viewcontroller A и по щелчку кнопки, я открыл другой viewcontroller с стилем представления в виде листа формы. Во втором виде контроллер, который открыт, имеет две кнопки. Теперь, когда эти кнопки будут нажаты, этот второй контроллер представления должен уйти, а следующий контроллер представления должен открыть поверх контроллера A. Но когда я пытаюсь сделать это, в диалоговом окне откроются другие контроллеры представлений . Я не знаю как развернуть этот сеанс и созвать еще одну сцену.Как закрыть диалоговое окно в Objective C

ответ

0

Нитья, вы попробовали следующий фрагмент кода, чтобы убрать текущий контроллер. Используйте его в IBAction кнопки, где вы хотите, чтобы закрыть ViewController: -

self.dismissViewControllerAnimated(true, completion: nil) 
+0

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

+0

Да, вы правы. Извините, я новичок в iOS. Пытался помочь. В таких случаях я предпочитаю использовать представления, а не viewControllers. Вы можете легко скрывать/отображать виды и легко загружать представление любого контроллера внутри другого uiview. – Abhishek729

0

Так у вас есть корень ViewController А с помощью кнопки. Если вы нажмете эту кнопку, другой диспетчер представлений (назовем его B) представлен A как лист формы. B имеет две кнопки и, если вы нажмете одну из этих кнопок, B должен быть распущен и после другой ViewController (скажем, C) shold будет представлен А.

Apple, не рекомендую этот вид рабочего процесса, тем не менее его можно реализовать. Вы можете подумать о том, чтобы вместо этого использовать контроллер навигации или контроллер мастер-детали. Но если вы придерживаетесь своей первоначальной идеи, вот некоторые возможные варианты:

1. Если вы используете раскадровку, а кнопка на B триггеров разматывает секцию до A, вы можете добавить это в конец развязки действие:

dispatch_async(dispatch_get_main_queue(), ^{ 
    [self performSegueWithIdentifier:@"segueThatPresentsC" sender:nil]; 
}); 

2. Если вы представить ваши viewcontrollers программного то: Перед вами настоящий B от A вы можете сконфигурировать кнопку B, так что цель IST является а и и его действием является методом, определенным в а :

- (void) dismissAndPresentC { 
    [self dismissViewControllerAnimated:YES completion:^{ 
     [self presentViewController:instanceOfC animated:YES completion:nil]; 
    }]; 
} 

Этот второй, возможно, немного меньший взлом, но все же запутанная концепция.

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