Синтаксис обработчика кнопок для увольнения ViewController в IOS - PullRequest
0 голосов
/ 17 января 2019

Я создал пользовательский 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 Ответ

0 голосов
/ 17 января 2019

То, что вы пытаетесь сделать, в корне неверно. Единственный допустимый параметр, который может принять ваш метод 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];
}
...