Синтаксис обработчика кнопок для увольнения ViewController в IOS
Я создал пользовательский UIBarButton в коде, чтобы отклонить пользовательский viewController. Однако компилятору не нравится мой синтаксис.
Вот код для создания UIBarButtonItem:
//grab VC
detailC* detailVC = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"detailVC"]; //This custom VC
is a sub-class of UIViewController
//Create barbuttonitem
UIBarButtonItem *leftButton = [[UIBarButtonItem alloc]
initWithImage:[UIImage imageNamed:@"close.png]
style:UIBarButtonItemStylePlain
target:self
action:@selector(dismss:detailVC)];//ERROR HERE
//Here is the dismiss method:
-(void) dismissVC: (UIViewController*) vc {
[vc dismissViewControllerAnimated:YES completion:nil];
}
Ошибка от компилятора: 'Expected :'
Есть возможность исправить insert :
, Если я выбираю исправление, он меняет селектор на:
action:@selector(dismissVC: controller:)];
что не имеет смысла, а также дает предупреждение 'Undeclared Selector"
Что я делаю неправильно?
Примечание: это происходит в appDelegate, поэтому я не могу использовать self, чтобы закрыть VC.
1 ответ
То, что вы пытаетесь сделать, в корне неверно. Единственный действительный параметр, который ваш dismissVC:
Метод может взять это UIBarButtonItem
что вызвало действие. Вы не можете передать контроллер представления этому методу.
Но вам не нужно. Так как вы хотите отклонить "себя", просто позвоните dismissViewController
на self
,
//Create barbuttonitem
UIBarButtonItem *leftButton = [[UIBarButtonItem alloc]
initWithImage:[UIImage imageNamed:@"close.png"]
style:UIBarButtonItemStylePlain
target:self
action:@selector(dismiss:)];
Вот обновленный метод:
- (void)dismiss:(UIBarButtonItem *)button {
[self dismissViewControllerAnimated:YES completion:nil];
}