Как запустить метод IBAction программно или с помощью кнопки и т. Д.? - PullRequest
6 голосов
/ 10 февраля 2012

Я легко могу «сделать что-то», создав метод IBAction и подключив его к кнопке в IB. Например ...

-(IBAction)popThat:(id)sndr{ [windy setFrame:eRect display:YES];}

Однако я не могу, за всю мою жизнь , понять, как это сделать с помощью простого, вызываемого метода ... то есть

-(void) popThatMethod { [windy setFrame:eRect display:YES]; }

-(void) awakeFromNib  { [self popThatMethod];               }

Я бы ожидал , что этот метод будет делать то же самое, что и нажатие кнопки ... поскольку они идентичны ... , но НЕТ Ничего не произошло. Что мне здесь не хватает?

Ответы [ 2 ]

6 голосов
/ 11 февраля 2012

Я не утверждаю, что это категорически лучший ответ или правильный способ сделать это, но один из подходящих подходов - поместить в -applicationDidFinishLaunching: следующее:

[self performSelector: @selector(popWindow:) withObject:self afterDelay: 0.0];

Это заставляет его вызываться на следующем проходе runloop, когда все, что раньше не было на месте, теперь на месте.

4 голосов
/ 08 ноября 2013

В зависимости от того, что вы пытаетесь сделать, вы можете захотеть

[buttonObj sendActionsForControlEvents: UIControlEventTouchUpInside];

, который запускает кнопку, как если бы она была нажата, и вызывает любые действия, связанные с ней.

ПРИМЕЧАНИЕ: это ответ, когда я задал этот вопрос ТАК.

...