2012-10-22 3 views
2

저는 여전히 변환기 응용 프로그램에서 작업 중이며 문제가 발생했습니다.UITextField를 연결하여 레이블을 업데이트하십시오.

텍스트 필드에서 모든 편집을 시도하면서 계산 코드를 트리거하는 동안 한 가지 일이 발생하지 않습니다. 이 기압 일어나는 것이다 : 나는 PickerWheel에서 뭔가를 변경할 때까지

trying to enter numbers

계산이 실행되지 않습니다. 내가 코드를 처음 만들었던 것처럼 코드를 비난하지 않는 것.

이 문제를 해결하는 동안 친구로부터 도움을 받았고 작동하려면 다음 코드를 추가했습니다.

우선하는 .m의 beggining에

- (void)textFieldChanged:(UITextField *)textField 
{ 
[self updateConversionLabel]; 
} 

, 그리고 (나는 그것 두를 알고, 그게 아마 잘못,하지만 난 모두를 시험해보고 싶었다.)

-(IBAction)textFieldChanged:(UITextField *)textField; 
-(void)textFieldChanged:(UITextField *)textField; 
.H에서 다음 나는 오류가 인터페이스 빌더에있을 수 있습니다 생각
#pragma mark - 
#pragma mark PickerView Delegate 

-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component 
{ 
[self updateConversionLabel]; 
} 

- (void)updateConversionLabel 
{ 
float convertFrom = [[_convertRates objectAtIndex:[picker selectedRowInComponent:0]] floatValue]; 

float convertTo = [[_convertRates objectAtIndex:[picker selectedRowInComponent:1]] floatValue]; 

float input = [inputText.text floatValue]; 
float to = convertTo; 
float from = convertFrom; 

float convertValue = input; 
float relative = to/from; 
float result = relative * convertValue; 

NSString *convertFromName = [_convertFrom objectAtIndex:[picker selectedRowInComponent:0]]; 
NSString *convertToName = [_convertFrom objectAtIndex:[picker selectedRowInComponent:1]]; 



NSString *resultString = [[NSString alloc]initWithFormat: 
          @" %.4f %@",result, convertToName]; 
resultLabel.text = resultString; 

NSString *formelString = [[NSString alloc]initWithFormat: 
          @" %.4f %@=", convertValue, convertFromName]; 
formelLabel.text = formelString; 


} 

, 그래서 여기에 연결입니다 다음과 같이

계산은 s connections inspector

간단한 해결책이 있습니까? :)

+0

label.text 값을 설정하기 전에 로그를 추가하면 콘솔에 해당 로그가 출력됩니까? – propstm

+0

여기에 나온 경우 출력되지 않았습니다. NSString * resultString = [NSString alloc] initWithFormat : @ "% .4f % @", result, convertToName]; NSLog (@ "Test"); resultLabel.text = resultString; –

+0

@propstm 그게 나쁜 징조입니까? : P –

답변

3

"값 변경됨"작업을 사용하는 대신 텍스트 필드에 "편집 변경됨"을 사용하십시오.

1

보기 컨트롤러가 UITextFieldDelegate를 준수하는지 확인하십시오. 인터페이스 builder에서 UITextField의 위임자로 viewController를 설정하십시오. 그런 다음의 ViewController이 위임 메서드를 구현 :

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string; 

그 대리인이 방법은 너무 거기에 당신의 계산을 트리거 사용자가 텍스트 필드를 변경할 때마다 트리거됩니다.

+0

죄송하지만, 이것은 나에게별로 도움이되지 못했습니다. 좀 더 설명해 주시겠습니까? 이 코드는 어디에 두어야합니까? 나는 텍스트 필드에 대한 델리게이트가 없다. 이걸 필요로 할까?나는 전혀 복잡하지 않다고 생각한다. 문제의 코드를 가지고 바로 수정하자. –

0

textFieldChanged 액션을 '변경 사항 편집'으로 변경하고 모든 계산 코드를 textFieldChanged 액션 메소드에 넣으십시오.

+0

soz mate, u는 2 늦은 4 da 무료 담당자였다. –

관련 문제