私はサブビューとしてUIView
のUIViewController
を持っています。私は、UIViewController
にUIView
の特定のアクションを通知(または聞いてください)したいと思います。 これを行うための標準的な方法は何ですか?サブビューで起こったことについてUIViewControllerに伝えてください
答えて
あなただけのアクションハンドラがしたい場合は、次の詳細情報については
- (void)viewDidLoad {
[super viewDidLoad];
// ......
UIButton *myButton = [[UIButton alloc] init]; // or initWithSOMETHING
[myButton addTarget:self action:@selector(someMethod:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:myButton];
[myButton release];
// ......
}
- (void)someMethod:(id)sender {
if (![sender isKindOfClass:[UIButton class]]) return;
// Do something about the action here...
}
を、UIControl
Documentationを参照してください。
アクションメッセージ
– sendAction:to:forEvent: – sendActionsForControlEvents: – addTarget:action:forControlEvents: – removeTarget:action:forControlEvents: – actionsForTarget:forControlEvent: – allTargets – allControlEvents
を準備し、送信します
それとも、あなたは親ビューコントローラを呼び出してビューコントローラの話ならば、あなたは「親」ビューコントローラへのアクセスにUIViewController
のpresentingViewController
プロパティを使用できます。
UIViewController *parentVC = [self presentingViewController];
[parentVC setSomething:self.withSomething];
presentingViewController
- ビューをこのビューコントローラを提示したコントローラ。このプロパティの(読み取り専用)
@property(nonatomic, readonly) UIViewController *presentingViewController
議論
デフォルトの実装では、このビューコントローラから出発して、ビュー 階層を歩きます。最初のビュー コントローラはそれがpresentViewController:animated:completion:
方法を受け見つけ、またはそのプロパティの 値として返されるYES
に設定さdefinesPresentationContext
性質を有しています。それは、 が戻り値を見つけるか、ルートビューコントローラに到達するまで階層を歩き続けます。
それともUIView
のsuperview
プロパティ:
superview
- 受信機のスーパー、またはそれが何を持っていない場合はnil。 (読み取り専用)[self.view.superview doSomething];
@property(nonatomic, readonly) UIView *superview
上記のコメントにあなたの答えに基づいて、これはボタンの押しであることを、「標準」の方法は、Uicontrolの中のメカニズムを使用することです。方法myViewController上で実行する:あなたは「myButtonという」を押すと
[myButton addTarget:myViewController action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];
を行うのであれば、プログラムで、「のbuttonPressedは」原因となります。 Interface Builderを使用して接続することもできます。
このコードは、UIViewControllerのUIView内のさまざまな場所に配置することができ、その結果、変数の正確な名前が変更されますが、押されたボタンを処理するにはおそらく最も簡単な方法です。
- 1. 誰にでも、なぜこのことが起こっているのか教えてください。
- 2. このコードブロックについて教えてください。 (コンタクトリスト)
- 3. Ruby - ここで何が起こっているのか教えてください
- 4. 試してください...キャッチ...最後に - 例外がどこで起こったかを "ex"で教えてください。以下で
- 5. このコードで何が起こっているのかを教えてください。
- 6. こんにちは。誰でもこのコードで何が起こっているか教えてください。誰でもここで起こっていることを説明することができます
- 7. この関数についてのコードを私に教えてください。
- 8. CSSトランジションが起こっていない:ホバーだが起こっている:アクティブ
- 9. 私はこのことについて考えていたC
- 10. numpyで私のコードがexpオーバーフローをどこに伝えるか教えてください。
- 11. このjQueryセレクターについて説明してください。
- 12. Javascript:この機能を理解するのを手伝ってください。
- 13. 試験紙がここに求めていることは誰でも教えてください。
- 14. コードの行数によってアプリケーションについて教えてください。
- 15. ggplotが、ここで提起したとして、私は同様の問題を抱えている伝説
- 16. サーバーを壊すことなくユーザーについて学んでください。
- 17. ここをクリックしてください。ルートの一部のみに色をつけてください。
- 18. 誰かが私が間違っていることをどこに伝えることができますか?
- 19. EC2インスタンスの起動前にオーロラが起動されていることを確認してください
- 20. チェックボックスがオフになっていることを確認してください。
- 21. ユーザーがアクティブになっていることを確認してください
- 22. Emberがテストモードになっていることを確認してください
- 23. idが列に入っていることを確認してください
- 24. Javascriptがあなただけのquickleyこのスクリプトで間違っているものを私に伝えることができます...ごめんなさい
- 25. JQueryについて私に教えてください。
- 26. react-routerに何かが起こるまで待つ方法を教えてください。
- 27. Backbone.jsの使い方について教えてください。
- 28. 私にこのコードを教えてください
- 29. "mjsip"について何が起こっていますか?
- 30. PHPからMySQLテーブルに投稿されないデータ。私がここで間違っていることを教えてください
どのような操作ですか?ボタンを押す?プロパティの値の変更はありますか? –
もちろん、ボタンを押しても機能します。 – SundayMonday