У меня есть две программно созданные кнопки, которые вы можете увидеть в моем методе viewDidLoad. В модальном окне у меня есть кнопка, которая вызывает метод cancelSearch через делегат. Когда я помещаю точку останова на метод cancelSearch, она попадает, поэтому я знаю, что мой делегат настроен правильно, но даже если он вызывает эту строку [self rejectViewControllerAnimated: YES complete: nil]; это фактически не закрывает модальное окно.Модальное окно не увольняется
Код, приведенный ниже, представлен на основном экране контроллера.
- (void)viewDidLoad
{
[super viewDidLoad];
UIBarButtonItem *actionButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:self action:@selector(showActionMenu:)];
actionButton.style = UIBarButtonItemStyleBordered;
UIBarButtonItem *searchButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSearch target:self action:@selector(showSearchMenu:)];
searchButtonItem.style = UIBarButtonItemStyleBordered;
UIToolbar* toolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 103.0f, 44.01f)];
NSArray* buttons = [NSArray arrayWithObjects:actionButton, searchButtonItem, nil];
[toolbar setItems:buttons animated:NO];
self.navigationItem.title = @"Census Management";
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:toolbar];
[[RKClient sharedClient] get:@"censusmanagement" delegate:self];
}
- (IBAction)showActionMenu:(id)sender
{
[self performSegueWithIdentifier: @"CMActionSegue" sender: self];
}
- (IBAction)showSearchMenu:(id)sender
{
ehrxCMSearchView *search = [[self storyboard] instantiateViewControllerWithIdentifier:@"cmSearch"];
search.selectedOptions = self.selectedOptions;
search.delegate = self;
[self.navigationController pushViewController:search animated:YES];
}
- (void)cancelSearch:(ehrxCMSearchView *)controller
{
[self dismissViewControllerAnimated:YES completion:nil];
}
Я думаю, что ты прав. Я изменил его, потому что я передавал его данные. Так что, как я это делаю, я думаю, что это даже действительно модальный вид. Поскольку у меня настроен мой делегат, могу ли я сделать это с главного контроллера? Ваша последняя строка выглядит так, как будто я буду выполнять это из нового представления, которое я показываю. – Jhorra
Думая об этом больше, я предполагаю, что, поскольку я выдвигаю представление вместо того, чтобы рассматривать его как модальный, я должен просто передать данные обратно на главный контроллер и сразу же вызвать функцию обратной связи вручную? – Jhorra
@Jhorra Вы можете вызвать -popViewControllerAnimated: либо из главного контроллера представления, либо из нового контроллера представления, поскольку они (теоретически) должны использовать тот же UINavigationController. Для модальных просмотров вам нужно будет вызвать -dismissModalViewControllerAnimated из представления, которое представило контроллер модального представления (скорее всего, ваш главный контроллер представления). –