私はUITabBarController
を3つのボタンで使用したアプリケーションを持っています。私は3つのクラスも持っています。私がしたいのは、クラス2(ビュー2)のボタンでクラス1(ビュー1)の- (IBAction) doSomething: (id) sender {}
を呼び出すことです。それはあなたのdoSomething
方法(ない機能)を行い、新しいクラスのメソッドを作成するためにそれを使用することは何でも別のクラス(およびビュー)のボタンを持つクラスの関数(IBAction)を呼び出す
答えて
テイク。両方のコントローラは、クラスをインポートし、インスタンス化し、メソッドを使用できます。
doSomething
のいずれかのコントローラに通知を送信できますが、メソッド内のコードが実際に両方のコントローラに適用される場合は、両方のコントローラに提供してください。
コントローラに別のコントローラに通知を送信させることができます。あなたはボタンを押すコードを実行するために、クラス1を通知したいときはこのように通知を送信します:
[[NSNotificationCenter defaultCenter] postNotificationName:@"ABCPerformButtonAction"
object:nil];
あなたはそれを呼び出すためにABCPerformButtonActionを持っていない、あなただけの、あなたがよ文字列を必要としますあなたの頭字語やアプリの名前などがわからないため、私はABCを使用しました。あなたが知らない何かの通知と同じ名前の通知を誤って送信しないようにします(あなたが使用しているサードパーティのライブラリなどを含む)を聞いています。
この通知が出ると、@ "ABCPerformButtonAction"をリッスンするためにdefaultCenterに登録されているオブジェクトは、選択したすべての操作を実行します。ここではどのようにコントローラ1つのレジスタ(これはのviewDidLoadようないくつかの場所やオブジェクトの初期化メソッドに配置する必要があります)です。
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(performDoSomething:)
name:@"ABCPerformButtonAction"
object:nil];
セレクタそこには、performDoSomethingは:,あなたがたときに実行するメソッドの名前だけです通知が消えます。そのメソッドは特定のフォーマットを持つ必要があるため、doSomethingメソッドを直接呼び出すことはできません。これは次のようになります:
- (void)performDoSomething:(NSNotification *)notif {
[self doSomething];
}
ご覧のとおり、すべての方法が呼び出されます。明らかに、これ以上のことができ、通知とともに情報を送信することさえできます(下記参照)。
最後に、オブザーバが割り当て解除される前にオブザーバとしてオブジェクトを削除することも重要です。理にかなって
[[NSNotificationCenter defaultCenter] removeObserver:self];
うまくいけば:通知を受け取るために登録された各オブジェクトのあなたのdeallocメソッドでは、これを追加します。 Apple documentation for NSNotificationCenterでは、詳細を説明しており、通知を使用するいくつかのサンプルアプリケーションを提供しています。
- 1. PDO関数を持つクラス/クラス内で別の関数を呼び出す
- 2. 別のクラスを呼び出す関数
- 3. 別のクラスの別のクラスの関数を呼び出す
- 4. 別のクラス内の別のクラス関数を呼び出す
- 5. 別のクラスのあるクラスの関数を呼び出す
- 6. 別のクラスのクラス関数を呼び出しますか?
- 7. あるクラスから別のクラスに関数を呼び出す
- 8. 別のクラスからクラス関数を呼び出す
- 9. React、別の関数内からクラス関数を呼び出す
- 10. 別の関数でphpクラス関数を呼び出す方法
- 11. 別のクラスの関数(変数を含む)を呼び出す
- 12. パラメータを持つ別のクラスのメソッドを呼び出す
- 13. クラス関数呼び出し
- 14. 別のクラスのTkinterマルチプロセッシング関数と呼び出し関数
- 15. Kivyボタンを使用して別のクラスの関数を呼び出す
- 16. ボタンコマンド内の別のクラスの関数を呼び出す
- 17. PHP。別のクラスの関数を呼び出す。
- 18. 別のクラスのフィールドから関数を呼び出す - Odoo v8
- 19. objective-c別のクラスの関数を呼び出す
- 20. 別のクラスの関数を呼び出す
- 21. 別のクラスの関数を呼び出す方法
- 22. 別のクラスのc関数を呼び出す
- 23. パラメータを持つ別のビュー内のビューを呼び出す
- 24. 他のクラスの定数値を持つコンストラクタを呼び出す
- 25. コアのPHPで同じクラスを持つ別の関数の関数変数を呼び出す方法
- 26. 別のクラスのメソッドを呼び出す
- 27. 別のクラスのデリゲートメソッドを呼び出す
- 28. 別の拡張クラスから関数を呼び出す
- 29. 別のGUIクラスから関数を呼び出すPython
- 30. 別の "クラス" /ファイルから関数を呼び出す
メソッドright :)それは少し複雑です。私に説明させてください。 2番目のクラスでは、いくつかの設定をnsarrayに保存してplistに保存する方法があります(ボタンをクリックするとすべてが発生します)。私は2番目のビューから最初のビューに切り替えるときに、私は何かをせずに直接その設定を使用する必要があります。だから私は設定を取得するファーストクラスでメソッドを呼び出すために、2番目のクラスのメソッドにいくつかのコードを入れたいと思います。 – user556541
[OK]を、あなたが望むことをする通知を送信する方法の説明を追加しました。 –
これは試しましたか? –