Как мне вызвать метод кнопки из ViewController? - PullRequest
1 голос
/ 02 февраля 2012

У меня есть метод addClicked, который вызывается при нажатии кнопки на панели навигации. Я хочу вызвать это позже в коде, не нажимая кнопку. Каков синтаксис для вызова этого метода?

    self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] 
                                             initWithBarButtonSystemItem:UIBarButtonSystemItemAdd 
                                             target:self action:@selector(add_Clicked:)];

Функция звонков выглядит так:

- (void) add_Clicked:(id)sender {

Я пытался:

[self add_Clicked:];

[add_Clicked:];

[self add_Clicked: self];

Последнее работает, но я не уверен, почему. Может кто-нибудь предоставить ссылку на документ, который объяснит, как это работает?

Ответы [ 3 ]

1 голос
/ 02 февраля 2012

Последний работает, потому что вы добавили текущий класс в качестве цели "target: self", но целью является (id), поэтому отправителем может быть любой объект в теории.

1 голос
/ 02 февраля 2012

Другая альтернатива предложениям, в зависимости от того, что вы делаете, состоит в том, чтобы добавить в класс другой метод и вызвать метод callback для его вызова.

- (void) add_Clicked:(id)sender {
  [self goAddSomething];
}


- (void) goAddSomething {
  /* add the code here to handle add. */
}

Затем в другой части вашегокод, вы можете вызвать [self goAddSomething];и не нужно использовать ноль.

1 голос
/ 02 февраля 2012

Вы должны передать что-то отправителю.Вот почему последний работает.

Попробуйте [self add_Clicked: nil]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...