Ваш метод делегата pickerView:titleForRow:forComponent:
должен быть таким, как
- (NSString*)pickerView:(UIPickerView*)pv titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
return [NSString stringWithFormat:@"%X",row];
}
Когда вы хотите извлечь строку, сделайте это,
NSString *hexString = [NSString stringWithFormat:@"%X%X%X%X%X", [hexPicker selectedRowInComponent:0], [hexPicker selectedRowInComponent:1], [hexPicker selectedRowInComponent:2], [hexPicker selectedRowInComponent:3], [hexPicker selectedRowInComponent:4]];
Это должно дать вам нужную шестнадцатеричную строку,
Приложение
Чтобы поддерживать бесконечную прокрутку, вам просто нужно вернуть достаточно большое число для количества строк, подобных этому,
- (NSInteger)pickerView:(UIPickerView*)pv numberOfRowsInComponent:(NSInteger)component
{
return 160000;
}
и во время инициализации используйте метод selectRow:inComponent:animated:
, чтобы выбрать строку где-то посередине, чтобы пользователь мог прокручивать их в любую сторону.
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
for ( int i = 0; i < hexPicker.numberOfComponents; i++ ) {
[hexPicker selectRow:80000 inComponent:i animated:NO];
}
}
Вам также потребуется изменить методы, упомянутые выше,
- (NSString*)pickerView:(UIPickerView*)pv titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
return [NSString stringWithFormat:@"%X",(row % 16)];
}
И извлечение шестнадцатеричной строки будет,
NSString *hexString = [NSString stringWithFormat:@"%X%X%X%X%X", ([hexPicker selectedRowInComponent:0] % 16), ([hexPicker selectedRowInComponent:1] % 16), ([hexPicker selectedRowInComponent:2] % 16), ([hexPicker selectedRowInComponent:3] % 16), ([hexPicker selectedRowInComponent:4] % 16)];