0

私は持っていてUITableView、すべてのセル内にピッカービューがあります。ユーザーは、すべてのピッカーの値を個別に変更できます。

どのセルの pickerView が変更されたかを知る必要があります。たとえば、ユーザーがピッカーを移動すると、これがセル 3 であることがわかります。

それを行う方法はありますか?変更された値を即座に取得する必要はありません。テーブルビューに関係のないGoボタンがクリックされたときに送信するよりも、配列に保存できます。

4

2 に答える 2

0

ピッカー ビューへのポインターの配列を格納することをお勧めします。したがって、配列のインデックス 0 は、テーブル行 0 などのピッカー ビューを指します。次に、ビュー コントローラーがすべてのピッカー ビューのデリゲートであることを確認します。プロトコルpickerView:didSelectRow:inComponent:で宣言されたメソッドを実装します。UIPickerViewDelegateそのメソッドにはUIPickerViewas パラメータのインスタンスがあります。これは、値が変更されたものです。indexOfObject:そのピッカー ビューの行を取得するには、配列にメソッドを送信します。

于 2012-10-23T15:11:45.027 に答える
0

のサブクラスを作成します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

このようにして、セルはデータ モデルの更新を直接処理します。コードをよりクリーンに保ちます。

于 2012-10-23T15:12:08.110 に答える