Отклонить modalviewcontrolleranimated:не удалит страницу?
-
08-07-2019 - |
Вопрос
Я прочитал все сообщения других пользователей о проблемах, но, похоже, они не заканчиваются результатом, который меня устраивает, или заканчиваются словами "Я это исправил, ребята, спасибо за помощь", но затем они забыли поделиться своим решением.Вот мой код для представления и отклонения (все ключевые объекты являются свойствами моего делегата приложения.Я пытаюсь открыть страницу "О программе", а затем вернуться к приложению.Что я сделал не так??
Настоящий модальный VC (работает):
-(IBAction) showInfoButton: (id) sender {
NSLog(@"%s", __FUNCTION__);
if( aboutViewController == nil ) {
aboutViewController = [[[AboutViewController alloc] initWithNibName:@"About" bundle:[NSBundle mainBundle]] autorelease];
[appDelegate.window addSubview: aboutViewController.view];
}
appDelegate.modalNavigationController = [[UINavigationController alloc] initWithRootViewController:aboutViewController];
[appDelegate.modalNavigationController presentModalViewController:appDelegate.modalNavigationController animated: YES];
}
Мое удаление из контроллера представления About (не работает):
-(IBAction) dismissAbout: (id) sender {
NSLog(@"%s", __FUNCTION__ );
[self dismissModalViewControllerAnimated:YES];
}
Я пробовал анимацию "НЕТ", но это не имело никакого значения.Я пытался сопоставить свой код с кодом других пользователей, но это не имело никакого значения.Я хожу по кругу, так что любая помощь приветствуется.
Решение
Шаблон по умолчанию для контроллера flipside в XCode предполагает, что вам необходимо иметь делегат в вашем модальном контроллере, указывающий вам на ваш исходный контроллер.Проще всего, если вы создадите новый проект в xcode, выберете Служебное приложение и взглянете на код.
Короче говоря, это должен быть код в вашем главный экран контроллер
- (IBAction)showInfo;
{
InfoScreen * aboutViewController = [[InfoScreen alloc] initWithNibName:@"InfoScreen" bundle:nil];
aboutViewController.delegate =self;
[self presentModalViewController: aboutViewController animated:YES];
[aboutViewController release];
}
- (void)flipsideViewControllerDidFinish;
{
[self dismissModalViewControllerAnimated:YES];
}
И это действие вашей кнопки "Назад" в вашем о экране:
- (IBAction)done {
[self.delegate flipsideViewControllerDidFinish];
self.delegate = nil;
}
В коде есть немного больше для того, чтобы заставить делегат отвечать на flipsideViewControllerDidFinish и т.д.это не имеет отношения к отключению контроллера, о котором вы спрашиваете, но, заглянув в шаблон служебного приложения, станет ясно.