UIPickerViewオブジェクトの使用法を学び、プログラムで作成しています。選択が行われた場合に呼び出しにデリゲートを使用することを考えると、ピッカーをインスタンス化したメインビューコントローラーにその情報を取得するための標準的な方法は何ですか?
セレクターを使用して、デリゲートが選択した行をViewControllerに送信できるようにすることを考えています。もっと良い方法はありますか?
これらのオブジェクトを定期的に使用する人からの支援をいただければ幸いです。
UIPickerViewオブジェクトの使用法を学び、プログラムで作成しています。選択が行われた場合に呼び出しにデリゲートを使用することを考えると、ピッカーをインスタンス化したメインビューコントローラーにその情報を取得するための標準的な方法は何ですか?
セレクターを使用して、デリゲートが選択した行をViewControllerに送信できるようにすることを考えています。もっと良い方法はありますか?
これらのオブジェクトを定期的に使用する人からの支援をいただければ幸いです。
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
行が選択されるたびにこのメソッドが呼び出されるように、デリゲート メソッドを実装します。
次のようなことができます。
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
NSLog(@"row %d selected in component %d", row, component);
}
通常、UIViewController
インスタンス化されたUIPickerView
は、そのデリゲート (およびデータソース) としても機能します。この場合、View Controller を次のようにピッカーのデリゲートに割り当てます。
[myPickerView setDelegate:self];
次に、- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
View Controller 内にメソッドを実装します。オブジェクトを別のオブジェクトのデリゲートに割り当てると、「ねえ、このオブジェクトは、これらのデリゲート メッセージが送信されたときに何をすべきかを知っている」と言っているのです。あなたの場合、「私のメインコントローラーは、ピッカーが didSelectRow:inComponent: メッセージを送信したときに何をすべきかを知っています」と言っています。
これを行う際に、セレクターを使用してデリゲートを選択した行をビューコントローラーに送信することを許可するナンセンスを行う必要はありません。それがデリゲートの要点です。UIPickerView
ピッカーの選択された行に含まれる情報をどうするかを知っている他のオブジェクト(コントローラー)に作業を「委任」しています。