2012-04-06 3 views
1

이것은 논리적 인 문제입니다. 예를 들어 나는 4 개의 레이블이 있다고 상상해보십시오. 그리고 나는이 레이블에 번호를 붙여야합니다.논리 문제 - 레이블에 숫자를 제목으로 표시

레이블은 다음과 같습니다. 버튼을 클릭하면 라벨의 제목이 바뀌어야합니다 (First in First Out과 비슷합니다).

처음 버튼을 클릭하면 Label1에 1이 표시됩니다. 그런 다음 두 번째 버튼을 클릭하면 label1 및 label2의 값이 표시됩니다 (값은 1과 2가됩니다). 문제는 우리가 다섯 번째로 클릭하려고 할 때 발생합니다. 이 때 label1 (1)의 값이 지워지고 이제 값 2 (각 숫자 앞으로)가 표시됩니다.

참고 : 인스턴스에는 4 개의 숫자 만 허용됩니다.

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

그리고 계속됩니다.

어떻게 프로그래밍 할 수 있고 코드를 표시하도록 코딩하지 않았습니다. 나는 이것에 붙어있다.

+0

을 다섯 번 째 클릭 할 때 레이블이 어떻게 보이게됩니까? 2-3---4--5? –

+0

예 2-3-4-5로, 9 번에 3-4-5-6으로 표시됩니다. – user1315906

답변

1

설명은 명확하지 않습니다. 그러나 한 번에 하나의 레이블이 "활성"상태가 될 수있는 상황을 설명하고 단추를 눌러 어떤 식 으로든 상태를 순환하는 것처럼 들리는 것 같습니다. 그렇다면 코드는 언제든지 활성화되어있는 레이블을 추적해야합니다. 키 누름을 처리하려면 현재 상태를 검사하고 올바른 일을하십시오.

아니면 마지막 네 자리 숫자를 저장하고 계속 증가 시키길 원합니 까? 그런 다음 네 가지 값의 목록을 유지하고 삽입 할 다음 번호와 계속 될 위치를 추적하십시오. 어디로 가는지 알기 위해 모듈로 연산을 사용하면 편리합니다. n % 4는 3으로 이동 한 다음 0으로 줄 수 있습니다.

이제 코드를 작성하십시오.

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를 저장하고 변경 될 때 모든 레이블을 갱신하는 것을 제외하고는 유사합니다.

+0

한 번에 모두 업데이트해야합니다. – user1315906

0

난 당신이 (모두 채워질 때까지, 다음 번호의 최신 세트를 표시하는 라벨을 계속 업데이트 한 번에 라벨을 하나씩 입력) 달성하려는 생각에 대한 몇 가지 의사 :

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