2012-04-06 14 views
1

Dies ist ein logisches Problem. Stellen Sie sich zum Beispiel vor, ich habe 4 Labels. Und ich muss eine Nummer zu diesem Label seinen Titel setzen.Logikproblem - Anzeigen von Zahlen auf Etiketten als Titel

Die Etiketten sind folgt; Es wird eine Schaltfläche geben und wenn ich darauf klicke, sollten sich die Titel der Etiketten ändern (Das ist ähnlich wie)

Wenn ich zum ersten Mal auf die Schaltfläche klicke, sollte nur die 1 für Label1 angezeigt werden. Wenn ich dann zum zweiten Mal auf die Schaltfläche klicke, sollten die Werte für label1 und label2 angezeigt werden (Die Werte sind 1 und 2 respektabel). Das Problem tritt zum 5. Mal auf, wenn wir versuchen zu klicken. Zu diesem Zeitpunkt wird der Wert von label1 (der 1 war) gelöscht und er sollte nun den Wert 2 annehmen (jede Zahl wird vorwärts gesendet).

Hinweis: In einer Instanz sind nur 4 Nummern zulässig.

L1 --- L2 --- L3 --- L4 
01 --- 02 --- 03 --- 04 
02 --- 03 --- 04 --- 05 
03 --- 04 --- 05 --- 06 

Und es geht weiter.

Wie konnte ich das programmatisch tun, und ich habe keine codiert, um Ihren Code anzuzeigen. Ich stecke damit fest.

+0

wie sollen die etiketten aussehen, wenn man sie das 5. mal anklickt? 2-3--4--5? –

+0

ja als 2-3-4-5, und zum neunten Mal sollte es als 3-4-5-6 – user1315906

Antwort

1

Ihre Beschreibung ist nicht besonders klar. Aber es klingt wie du versuchst, eine Situation zu beschreiben, in der mehr als ein Label gleichzeitig "aktiv" sein kann, und wenn du auf den Knopf drückst, kommst du durch die Zustände in irgendeiner Weise. Wenn dies der Fall ist, sollte Ihr Code verfolgen, welche Labels zu jeder Zeit aktiv sind. Um einen Tastendruck auszuführen, untersuchen Sie den aktuellen Status und tun Sie das Richtige.

Oder möchten Sie vielleicht die letzten vier Zahlen speichern und weiter erhöhen? Dann halten Sie eine Liste der vier Werte, die Sie haben, und verfolgen Sie die nächste Nummer, die eingefügt werden soll und wohin sie gehen wird. Um zu wissen, wohin es geht, ist es nützlich, die Modulo-Operation zu verwenden: n% 4 geht auf 3 und dann auf 0 zurück.

Jetzt schreibe etwas Code.

1

Ich gehe davon aus, dass Sie nur ein Etikett pro Klick ändern möchten. Es ist nicht genau Klicks reagiert oder Etiketten einstellen, aber hier ist etwas zu prüfen, sollten Sie die Antwort geben in Bezug auf die Arithmetik:

NSInteger maxLabel = 4; 
for (NSInteger clickCount = 0; clickCount < 12; clickCount++) { 
    NSInteger baseValue = clickCount/maxLabel; 
    NSInteger cycleValue = (clickCount % maxLabel) + 1; 
    NSLog(@"Set label %i to %i", cycleValue, baseValue + cycleValue); 
} 

Auf der anderen Seite, wenn Sie versuchen, sie alle auf einmal zu ändern, dann Die Logik ist ähnlich, außer dass der baseValue gespeichert wird und alle Beschriftungen aktualisiert werden, wenn sie sich ändern.

+0

Ich muss alle auf einmal zu aktualisieren. – user1315906

0

Einige Pseudo-Code für das, was ich denke, Sie versuchen zu erreichen (die Etiketten einer nach dem anderen zu füllen, bis alle gefüllt sind, dann halten die Etiketten Aktualisierung nur die neueste Reihe von Zahlen zu zeigen):

int numLabels = 4; 
onClick() { 
    static int lastDisplayed = 0; 
    lastDisplayed++; 
    for (i from 1 to min(lastDisplayed, numLabels)) { 
    label[i-1] = (i + lastDisplayed - min(lastDisplayed, numLabels)); 
    } 
} 
Verwandte Themen