私は持っていてUITableView
、すべてのセル内にピッカービューがあります。ユーザーは、すべてのピッカーの値を個別に変更できます。
どのセルの pickerView が変更されたかを知る必要があります。たとえば、ユーザーがピッカーを移動すると、これがセル 3 であることがわかります。
それを行う方法はありますか?変更された値を即座に取得する必要はありません。テーブルビューに関係のないGoボタンがクリックされたときに送信するよりも、配列に保存できます。
私は持っていてUITableView
、すべてのセル内にピッカービューがあります。ユーザーは、すべてのピッカーの値を個別に変更できます。
どのセルの pickerView が変更されたかを知る必要があります。たとえば、ユーザーがピッカーを移動すると、これがセル 3 であることがわかります。
それを行う方法はありますか?変更された値を即座に取得する必要はありません。テーブルビューに関係のないGoボタンがクリックされたときに送信するよりも、配列に保存できます。
ピッカー ビューへのポインターの配列を格納することをお勧めします。したがって、配列のインデックス 0 は、テーブル行 0 などのピッカー ビューを指します。次に、ビュー コントローラーがすべてのピッカー ビューのデリゲートであることを確認します。プロトコルpickerView:didSelectRow:inComponent:
で宣言されたメソッドを実装します。UIPickerViewDelegate
そのメソッドにはUIPickerView
as パラメータのインスタンスがあります。これは、値が変更されたものです。indexOfObject:
そのピッカー ビューの行を取得するには、配列にメソッドを送信します。
のサブクラスを作成しますUITableViewCell
。そのサブクラスは、更新したいものへの参照を取得する必要があり、ピッカーへの作成 (または IBOutlet リンク) を行うだけで、ピッカーのデリゲートになることができます。
したがって、セルには次のものが必要です。
- (void) passStuff:(NSMutableDictionary *)datamodel key:(NSString *)key values:(NSArray *)values {
_privateWeakRefDataModel = datamodel;
_privateCopyKey = key;
_privateValues = values;
[picker reloadData];
}
#pragma mark - Picker Delegate Code here
このようにして、セルはデータ モデルの更新を直接処理します。コードをよりクリーンに保ちます。