6

IBActionメソッドを作成し、それをIBのボタンに接続することで、簡単に「何かを行う」ことができます。たとえば...IBActionメソッドをプログラムでトリガする方法とボタンなどでトリガする方法はありますか?

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

はしかし、私は、シンプル、呼び出し可能なメソッド経由でこれを行う方法を私の人生のため把握することはできません...つまり

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

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

このメソッドは、ボタンをクリックしたときと同じことを行うと期待しています。同じ... ではなく、です。何も起こりません。 私はここで何が欠けていますか?

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

これは、それが発生します

+1

を尋ねられたときからの回答です。代わりに 'applicationDidFinishLaunching'または' windowDidLoad'から呼び出すことを試みてください。 – guitarflow

+0

' - (void)applicationDidFinishLaunching:(NSNotification *)notification'の中で試してみました。 –

+1

別にメソッドを実行する必要はありません。IBActionの返すメソッドを '[self popWindowMethod:self];で呼び出すだけです。 – twilson

答えて

6

私は、これは断固として最高の答え、またはそれを行うための正しい方法ですが、作品一つのアプローチは、-applicationDidFinishLaunching:に次のように置くことであると述べているしないでくださいランロップの次のパスで呼び出されます。これまでは、前になかったものが今の所にあります。

4

あなたがやろうとしている内容に応じて、あなたはそれがタッチされていた、と力どんなアクションがそれに接続されているかのようにボタンをトリガー

[buttonObj sendActionsForControlEvents: UIControlEventTouchUpInside]; 

をお勧めします。

注:それは私はあなたがあまりにも早くそれを呼び出すことは可能かもしれないthis SO question.

+0

わかりませんが、これは '[button performClick];と似ています。これは私がMacのボタンで使っていたものです。 –

関連する問題