ModalViewController отклоняет представление с помощью селектора - PullRequest
1 голос
/ 25 января 2012

У меня есть модальный контроллер вида, который представлен на моем главном экране, я добавляю кнопку «Готово» в верхней правой части вида (навигационный контроллер).Однако я не могу заставить селектор вызывать правильный метод.Вот код, который я использую для настройки модального представления:

    GraphView *graphView = [[[GraphView alloc] initWithNibName:@"GraphView" bundle:nil] autorelease];

//Set values in the graphView view
[graphView setInterest:interestRateSlider.value / 10];
[graphView setMonths: (loanTermSlider.value / 2.0) * 12]; // Years * 12 = months
[graphView setPrincipal:[principal intValue]];

//show the graph view as a modal navigation controller view
UINavigationController *graphNavigationController = [[UINavigationController alloc] initWithRootViewController:graphView];
UIBarButtonItem *doneButton = [[UIBarButtonItem alloc ] 
                               initWithBarButtonSystemItem:UIBarButtonSystemItemCancel 
                               target:graphView
                               action:@selector(dismissView:)];
graphView.navigationItem.rightBarButtonItem = doneButton;
[graphNavigationController.navigationItem.rightBarButtonItem setTitle:@"Done"];
[graphView.navigationItem setTitle:@"Graph"];
[self presentModalViewController:graphNavigationController animated:YES];
[graphNavigationController release];
[doneButton release];

Тогда в моем классе graphView у меня есть метод:

 -(void) dismissView {
     [self dismissModalViewControllerAnimated: YES];
 }

Однако при запуске кода я получаюнераспознанный селектор.Селектор пытается вызвать метод для переменной UINavigationController.Как я могу заставить селектор вызывать правильный метод?

Спасибо

1 Ответ

2 голосов
/ 25 января 2012

Вы допустили ошибку при вызове селектора:

UIBarButtonItem *doneButton = [[UIBarButtonItem alloc ] 
                           initWithBarButtonSystemItem:UIBarButtonSystemItemCancel 
                           target:graphView
                           action:@selector(dismissView:)];

, когда dismissView определен как

-(void) dismissView;

, вы должны определить dismissView как

-(void) dismissView:(id)sender;

илиназывать это без двоеточия

UIBarButtonItem *doneButton = [[UIBarButtonItem alloc ] 
                           initWithBarButtonSystemItem:UIBarButtonSystemItemCancel 
                           target:graphView
                           action:@selector(dismissView)];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...