Jak zawinąć komponent UIPickerView?
Chciałbym pokazać zestaw kolejnych liczb w komponencie UIPickerView, ale niech zawija się jak komponent seconds aplikacji Clock- > Timer. Jedyne zachowanie, które mogę włączyć, wygląda jak komponent hours aplikacji Timer, w którym można przewijać tylko w jednym kierunku.
4 answers
Równie łatwo jest ustawić liczbę wierszy na dużą liczbę i sprawić, że zacznie się od wysokiej wartości, istnieje niewielka szansa, że użytkownik będzie przewijał koło przez bardzo długi czas-a nawet wtedy, gorzej, że trafi na dno.
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {
// Near-infinite number of rows.
return NSIntegerMax;
}
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
// Row n is same as row (n modulo numberItems).
return [NSString stringWithFormat:@"%d", row % numberItems];
}
- (void)viewDidLoad {
[super viewDidLoad];
self.pickerView = [[[UIPickerView alloc] initWithFrame:CGRectZero] autorelease];
// ...set pickerView properties... Look at Apple's UICatalog sample code for a good example.
// Set current row to a large value (adjusted to current value if needed).
[pickerView selectRow:currentValue+100000 inComponent:0 animated:NO];
[self.view addSubview:pickerView];
}
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
NSInteger actualRow = row % numberItems;
// ...
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-12-15 03:56:29
Swoją odpowiedź znalazłem tutaj:
Http://forums.macrumors.com/showthread.php?p=6120638&highlight=UIPickerView#post6120638
Gdy zapyta o tytuł wiersza, podaj: Kod:
return [rows objectAtIndex:(row % [rows count])];
Gdy mówi, że użytkownik nie wybrał: inComponent:, użyj czegoś takiego:
Kod:
//we want the selection to always be in the SECOND set (so that it looks like it has stuff before and after)
if (row < [rows count] || row >= (2 * [rows count]) ) {
row = row % [rows count];
row += [rows count];
[pickerView selectRow:row inComponent:component animated:NO];
}
Wygląda na to, że UIPickerView nie obsługuje owijania natywnie, ale można go oszukać, wstawiając więcej zestawów danych do wyświetlenia i gdy selektor zatrzymuje się, wyśrodkowując komponent do środka zestawu danych.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-18 07:47:42
Po prostu utwórz tablicę wiele razy, tak, że masz swoje liczby wiele razy. Powiedzmy, kiedy chcesz mieć liczby od 0 do 23 i umieścić je w tablicy. że zrobimy to 10 razy...
NSString *stdStepper;
for (int j = 0; j<10; j++) {
for(int i=0; i<24; i++)
{
stdStepper = [NSString stringWithFormat:@"%d", i];
[_hoursArray addObject:stdStepper];
}
}
Później ustawiamy wiersz 0 wybrany w ten sposób
[_hoursPickerView selectRow:120 inComponent:0 animated:NO];
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-24 21:45:55
Wszystkie odpowiedzi nie sprawiają, że picker view scroll cyklicznie.
Zrobiłem cykliczny widok tableView na podstawie UIScrollView
. I na podstawie tego widoku tableView, ponownie zaimplementuję UIPickerView
. Może cię to zainteresować DLPickerView
. I ten widok wyboru ma wszystkie funkcje, które UIPickerView
ma, ale także daje wiele nowych funkcji, a Niestandardowy ten widok wyboru jest znacznie łatwiejszy.
Https://github.com/danleechina/DLPickerView
I należy pamiętać, że ten DLPickerView
cyklicznie zwój jest naprawdę przewijanie cykliczne. Cała magia miała miejsce z powodu innej klasy DLTableView
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-14 06:35:08