Отклонить modalviewcontrolleranimated:не удалит страницу?

StackOverflow https://stackoverflow.com/questions/1817124

  •  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 и т.д.это не имеет отношения к отключению контроллера, о котором вы спрашиваете, но, заглянув в шаблон служебного приложения, станет ясно.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top