You can use ZLDeviceSelectedView to choise the device which you selected.If you hanve any advice or problem, please issue me.
First, you should import ZLDeviceSelectedViewModel.h, ZLDeviceChoiseModel.h and ZLDeviceSelectedView.h.
Second, you should init a NSArray to set up the detailArray, and use the initial method to create and use it.
 NSMutableArray *bluetoothModelArray = [NSMutableArray arrayWithCapacity:8];
    for (NSInteger index = 0; index < 8; index++) {
        ZLDeviceChoiseModel *deviceChoiceModel = [[ZLDeviceChoiseModel alloc] init];
        deviceChoiceModel.vendorNumber = [NSString stringWithFormat:@"%ld", index];
        deviceChoiceModel.vendorName = [NSString stringWithFormat:@"Bluetooth%ld", index];
        [bluetoothModelArray addObject:deviceChoiceModel];
    }
    NSMutableArray *otgModelArray = [NSMutableArray arrayWithCapacity:2];
    for (NSInteger index = 0; index < 2; index++) {
        ZLDeviceChoiseModel *deviceChoiceModel = [[ZLDeviceChoiseModel alloc] init];
        deviceChoiceModel.vendorNumber = [@(index) stringValue];
        deviceChoiceModel.vendorName = [NSString stringWithFormat:@"OGT%ld", index];
        [otgModelArray addObject:deviceChoiceModel];
    }
    
    ZLDeviceSelectedViewModel *nfcModel = ({
        ZLDeviceSelectedViewModel *model = [[ZLDeviceSelectedViewModel alloc] init];
        model.normalImage = @"btn_NFC_nor";
        model.selectedImage = @"btn_NFC_pre";
        model.title = @"NFC device";
        model.tipsWhenHasNoneDevice = @"Temporarily dose not support NFC mode";
        model;
    });
    ZLDeviceSelectedViewModel *bluetoothModel = ({
        ZLDeviceSelectedViewModel *model = [[ZLDeviceSelectedViewModel alloc] init];
        model.normalImage = @"btn_BT_nor";
        model.selectedImage = @"btn_BT_pre";
        model.title = @"Bluetooth device";
        model.vendor = bluetoothModelArray;
        model;
    });
    ZLDeviceSelectedViewModel *otgModel = ({
        ZLDeviceSelectedViewModel *model = [[ZLDeviceSelectedViewModel alloc] init];
        model.normalImage = @"btn_OTG_nor";
        model.selectedImage = @"btn_OTG_pre";
        model.title = @"OTG device";
        model.vendor = otgModelArray;
        model;
    });
    NSArray *detailArray = @[nfcModel, bluetoothModel, otgModel];
    
    [[ZLDeviceSelectedView deviceSelectedViewWithTitle:@"Please choise the device of read ID Card" detailArray:detailArray storeKey:@"IDCardRead" selectedDeviceResult:^(NSDictionary *result) {
        NSLog(@"result: %@", result);
    }] show];
    
and you can assign the value like this
NSArray *detailArray = @[
                             [ZLDeviceSelectedViewModel modelWithDict:@{@"normalImage" : @"btn_NFC_nor", @"selectedImage" : @"btn_NFC_pre", @"title" : @"NFC device", @"tipsWhenHasNoneDevice" : @"Temporarily dose not support NFC mode"
                                                                        }],
                             [ZLDeviceSelectedViewModel modelWithDict:@{@"normalImage" : @"btn_BT_nor", @"selectedImage" : @"btn_BT_pre", @"title" : @"Bluetooth device", @"vendor":@[
                                                                                [ZLDeviceChoiseModel modelWithDict:@{@"vendorNumber":@"1", @"vendorName":@"NFC1"}],
                                                                                [ZLDeviceChoiseModel modelWithDict:@{@"vendorNumber":@"2", @"vendorName":@"NFC2"}]
                                                                                ]
                                                                        }],
                             [ZLDeviceSelectedViewModel modelWithDict:@{@"normalImage" : @"btn_OTG_nor", @"selectedImage" : @"btn_OTG_pre", @"title" : @"OTG device", @"tipsWhenHasNoneDevice" : @"Temporarily dose not support NFC mode"
                                                                        }]
                             ];
    
    [[ZLDeviceSelectedView deviceSelectedViewWithTitle:@"Please choise the device of read ID Card" detailArray:detailArray storeKey:@"IDCardRead" selectedDeviceResult:^(NSDictionary *result) {
        NSLog(@"result: %@", result);
    }] show];
You can use it like this, then you should not assign the modelArray everytime when you use it.Because it is too long ,and you maybe make a mistake when you write it.So I think we can encapsulate it in a singleton method, just like the ManageTools I used in here.
[ManageTools idCardDeviceSelectedView:^(NSDictionary *result) {
        NSLog(@"result: %@", result);
    }];
The class `ZLDeviceChoiseModle` which I encapsulate may not satisfy your requirement. You can modify it.And you should modify the code at some files.
1.In `ZLDeviceChoiseModle.h`
2.In `ZLDeviceSelectedView` at line 318 and 319
3.In `ZLDeviceSelectedDeviceContentView.h` at line 80
4.In `ZLDeviceSelectedDeviceView.h` at line 58
5.And you shoud modify the value when you assign the `detailArray`
