Frage

Ich möchte eine Reihe von aufeinanderfolgenden Zahlen in einer UIPickerView Komponente zeigen, sondern habe es wie die Sekunden-Komponente der Uhr-> Timer-Anwendung umschlingen. Das einzige Verhalten kann ich aussehen wie die Stunden-Komponente der Anwendung Timer aktiviert, in dem Sie nur in eine Richtung bewegen können.

War es hilfreich?

Lösung

Es ist genauso einfach, die Anzahl der Zeilen zu einer großen Zahl zu setzen, und es auf einem hohen Wert beginnen zu machen, gibt es kaum eine Chance, dass der Benutzer immer das Rad für eine sehr lange Zeit bewegen - Und selbst dann die schlimmer, was passieren wird, ist, dass sie den Boden geschlagen werden.

- (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;
    // ...
}

Andere Tipps

fand ich meine Antwort hier:

http://forums.macrumors.com/showthread.php ? p = 6120638 & highlight = UIPickerView # post6120638

Wenn es um den Titel einer Reihe fragt, geben Sie ihm: Code:

return [rows objectAtIndex:(row % [rows count])];

Wenn es sagt der Benutzer didSelectRow: inComponent etwas wie folgt verwenden :,:

Code:

//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];
}

Es scheint, dass die UIPickerView nicht nativ Umwickeln nicht unterstützt, aber man kann es täuschen, indem mehrere Sätze von Daten eingefügt werden angezeigt, und wenn die Picker stoppt, um die Komponente in die Mitte des Datensatzes Zentrierung.

Erstellen Sie einfach ein Array mehrere Male, so dass Sie Ihre Zahlen mehrmals haben. Nehmen wir an, wenn die Zahlen von 0 bis 23 und setzte sich in einem Array haben wollen. dass wir 10-mal so machen werden ...

NSString *stdStepper;

    for (int j = 0; j<10; j++) {
        for(int i=0; i<24; i++)
        {
            stdStepper = [NSString stringWithFormat:@"%d", i];

            [_hoursArray addObject:stdStepper];

        }
    }

später setzen wir die Reihe 0 wie folgt ausgewählt

[_hoursPickerView selectRow:120 inComponent:0 animated:NO];

Alle Antworten sind nicht wirklich zyklisch Picker Ansicht blättern zu machen.

Ich habe ein zyklisches Tableview basiert auf UIScrollView gemacht. Und auf der Grundlage dieser Tableview, ich neu implementieren UIPickerView. Sie könnten in diesem DLPickerView interessiert. Und diese Picker Ansicht verfügt über alle Funktionen, die UIPickerView haben, gibt aber auch viele neue Funktionen und benutzerdefinierten diese Picker Ansicht ist viel einfacher.

https://github.com/danleechina/DLPickerView

Und darüber im Klaren sein, dass diese DLPickerView zyklisch Scroll Scrollen zyklisch wirklich. Die ganze Magie passiert wegen einer anderen Klasse DLTableView.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top