1

これはロジックの問題です。たとえば、4 つのラベルがあるとします。そして、タイトルとしてこれらのラベルに番号を設定する必要があります。

ラベルは次のとおりです。ボタンがあり、それをクリックすると、ラベルのタイトルが変更されます (これは に似ていますFirst in First Out)

ボタンを初めてクリックすると、Label1 の 1 が表示されます。次に、ボタンを2回クリックすると、label1とlabel2の値が表示されます(値は1と2になります)。5 回目のクリックで問題が発生します。この時点で、label1 の値 (1 だった) は消去され、値 2 になるはずです (各数値が前進します)。

注: 1 つのインスタンスで許可される数字は 4 つだけです。

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

そしてそれは続く。

どうすればプログラムでこれを行うことができますか?あなたのコードを表示するためにコードを書いていません. 私はこれで立ち往生しています。

4

3 に答える 3

1

あなたの説明は特に明確ではありません。しかし、一度に複数のラベルが「アクティブ」になる可能性がある状況を説明しようとしているように聞こえます。ボタンを押すと、何らかの方法で状態が循環します。その場合、コードはいつでもアクティブなラベルを追跡する必要があります。キーの押下を処理するには、現在の状態を調べて、正しいことを行います。

または、最後の4つの数値を保存して、増分を続けたい場合は、次に、あなたが持っている4つの値のリストを保持し、挿入する次の数値とそれがどこに行くかを追跡します。どこに行くかを知るには、モジュロ演算を使用すると便利です。n%4は3になり、次に0に折り返されます。

次に、コードを記述します。

于 2012-04-06T16:05:15.043 に答える
1

クリックごとに 1 つのラベルのみを変更したいと想定しています。クリックやラベルの設定に正確に反応するわけではありませんが、算術に関する答えが得られるはずです。

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);
}

一方、一度にすべてを変更しようとしている場合、baseValue を保存し、変更時にすべてのラベルを更新することを除いて、ロジックは似ています。

于 2012-04-06T16:13:08.137 に答える
0

あなたが達成しようとしていると思うもののいくつかの擬似コード(すべてが満たされるまで一度に1つずつラベルを埋めてから、最新の数字のセットのみを表示するようにラベルを更新し続けます):

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));
  }
}
于 2012-04-06T16:15:45.863 に答える