AUCascadePicker は、最大 3 レベルをサポートする多階層カスケードピッカーコントロールです。
サンプル画像

API の説明
// ピッカーに選択された項目を設定します。
@interface AUCascadePickerSelectedRowItem : NSObject
@property (nonatomic, strong) NSString *selectedLeftTitle; // 左側のサブリストで選択されたタイトル。
@property (nonatomic, strong) NSString *selectedMiddleTitle; // 中央のサブリストで選択されたタイトル。
@property (nonatomic, strong) NSString *selectedRightTitle; // 右側のサブリストで選択されたタイトル。
@end
@interface AUCascadePickerRowItemModel : NSObject
@property (nonatomic, strong) NSString *rowTitle;
@property (nonatomic, strong) NSArray<AUCascadePickerRowItemModel *> *rowSubList;
@end
// 連動効果に必要なデータモデル。
@interface AUCascadePickerModel : NSObject
@property (nonatomic,strong) AUCascadePickerSelectedRowItem *preSelected; // クライアントから転送された選択済み項目。
@property (nonatomic, strong) AUCascadePickerSelectedRowItem *selectedItem; // 現在のコンポーネントに自動的に記録される選択済みデータリスト。
@property (nonatomic, strong) NSArray<AUCascadePickerRowItemModel *> *dataList; // データリスト。
@property (nonatomic, strong) NSString *title; // ピッカーのタイトル。
@end
@interface AUCascadePicker : AUPickerBaseView <UIPickerViewDataSource, UIPickerViewDelegate>
@property (nonatomic, strong) AUCascadePickerModel *dataModel;
@property (nonatomic, assign) NSInteger numberOfComponents;
@property (nonatomic, weak) id <AUCascadePickerDelegate> linkageDelegate;
- (instancetype)initWithPickerModel:(AUCascadePickerModel *)model;
@end
// 上部の キャンセル ボタンと 完了 ボタンのコールバック。
@protocol AUCascadePickerDelegate <AUPickerBaseViewDelegate>
/*
* キャンセルがクリックされたときにコールバックが実行されます。
*/
- (void)cancelPickerView:(AUCustomDatePicker *)pickerView;
/*
* 完了がクリックされたときにコールバックが実行されます。選択された項目は selectedRowInComponent を介して返すことができます。
*/
- (void)selectedPickerView:(AUCustomDatePicker *)pickerView
@endJSAPI の説明
API
antUIGetCascadePicker
使用方法
AlipayJSBridge.call('antUIGetCascadePicker',
{
title: 'nihao',// カスケードオプションのタイトル。
selectedList:[{"name":"Hangzhou",subList:[{"name":"Shangcheng district"}]}],
list: [
{
name: "Hangzhou",// エントリ名。
subList: [
{
name: "Xihu district",
subList: [
{
name: "Gucui Street"
},
{
name: "Wenxin Street"
}
]
},
{
name: "Shangcheng district",
subList: [
{
name: "Yan'an Street"
},
{
name: "Longxiangqiao Street"
}
]
}
]// カスケードサブデータリスト。
}
]// カスケードデータリスト。
},
function(result){
console.log(result);
});入力パラメーター
名前 | タイプ | 説明 | 必須 | バージョン |
|---|---|---|---|---|
title | String | カスケードコントロールのタイトル。 | いいえ | 10.1.2 |
selectedList | Json | 選択されたサブ項目。入力パラメーターと同じ形式です。 | いいえ | 10.1.2 |
list | Json | セレクターデータリスト。 | はい | 10.1.2 |
name | String |
| はい | 10.1.2 |
subList | Json |
| いいえ | 10.1.2 |
fn | function | 選択完了後のコールバック関数。 | いいえ | 10.1.2 |
出力パラメーター
名前 | タイプ | 説明 | バージョン |
|---|---|---|---|
success | Bool | 選択が完了したかどうか。選択がキャンセルされた場合は、false が返されます。 | 10.1.2 |
result | Json | 選択された項目。例: | 10.1.2 |
サンプルコード
model = [[AULinkagePickerModel alloc] init];
NSMutableArray *modelList = [[NSMutableArray alloc] init];
for (int i=0; i<6; i++)
{
AULinkagePickerRowItemModel *item = [[AULinkagePickerRowItemModel alloc] init];
item.rowTitle = [NSString stringWithFormat:@"レベル 1 %d", i];
NSMutableArray *array = [[NSMutableArray alloc] init];
for (int j=0; j<7; j++)
{
if (i == 0)
{
break;
}
AULinkagePickerRowItemModel *item1 = [[AULinkagePickerRowItemModel alloc] init];
item1.rowTitle = [NSString stringWithFormat:@"レベル 2 %d", j];
NSMutableArray *array1 = [[NSMutableArray alloc] init];
for (int k=0; k<5; k++) {
AULinkagePickerRowItemModel *item2 = [[AULinkagePickerRowItemModel alloc] init];
item2.rowTitle = [NSString stringWithFormat:@"レベル 3 %d", k];
[array1 addObject:item2];
if (j == 1 || j== 2) {
break;
}
}
item1.rowSubList = array1;
[array addObject:item1];
if (i == 3 || i== 5) {
break;
}
}
item.rowSubList = array;
[modelList addObject:item];
}
model.dataList = modelList;
AULinkagePickerSelectedRowItem *item = [[AULinkagePickerSelectedRowItem alloc] init];
item.selectedLeftTitle = @"レベル 1 0";
item.selectedMiddleTitle = @"レベル 2 0";
item.selectedRightTitle = @"レベル 3 0";
model.selectedItem = item;
self.linkagePickerView = [[AULinkagePickerView alloc] initWithPickerModel:model];
self.linkagePickerView.linkageDelegate = self;
[self.linkagePickerView show];