dismissModalViewControllerAnimated: не будет отклонять страницу? - PullRequest
2 голосов
/ 30 ноября 2009

Я прочитал все описания проблем других пользователей, но они, похоже, не заканчиваются результатом, который работает для меня, или заканчиваются словами: «Я исправил это, ребята, спасибо за помощь», но затем они пренебрегли поделитесь своим решением. Вот мой код для представления и отклонения (все ключевые объекты являются свойствами моего делегата приложения. Я пытаюсь открыть страницу About и затем вернуться в приложение. Что я сделал не так ?? *

Настоящий модальный ВК (работает):

-(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 View (не работает):

-(IBAction) dismissAbout: (id) sender {
NSLog(@"%s", __FUNCTION__ );

[self dismissModalViewControllerAnimated:YES];

}

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

1 Ответ

4 голосов
/ 03 декабря 2009

Шаблон по умолчанию для обратного контроллера в XCode предполагает, что вам нужно иметь делегата в вашем модальном контроллере, указывающего вам на ваш первоначальный контроллер. Проще всего, если вы создадите новый проект в xcode, выберете приложение Utility и взгляните на код.

Короче говоря, это должен быть код на главном экране контроллер

- (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 и т. Д., Что не имеет отношения к удалению контроллера, о котором вы спрашиваете, но просмотр шаблона приложения Utility проясни.

...