2011. 12. 6. 20:54ㆍ제2외국어/iOS
조금 느린 2회. (제사 지내고 오느라..)
일단 사용된 여러가지 함수를 나열하겠습니다.
문자열에 관련된 NSString
[ 문자열 비교 하기 ]
[showResult.text isEqualToString:@"0"] // showResult.text 가 0과 같은가?
[ 문자열에 덧붙이기 ]
showResult.text = [showResult.text stringByAppendingString:pressed.titleLabel.text];
// showResult 에 pressed.titleLabel.text (눌러져있는 있는 버튼의 라벨 붙이기)
[ 문자열에 자르기 ]
showResult.text = [showResult.text substringWithRange:(NSRange){0,length}];
length 는 문자열의 길이에 -1 한 값임니다. 이 예제는 Del키 눌렀을 때 마지막 글자만 지울 때 사용되었습니다.
[ 문자열에 마지막 문자 알아내기 ]
NSString *temp =[showResult.text substringFromIndex:length-1];
[ 문자열에서 필터링하기 ]
이 부분은 그냥 예제를 그대로 보여드리겠습니다.
NSCharacterSet *filter=[NSCharacterSetcharacterSetWithCharactersInString:@"+-*/"];
NSCharacterSet 형을 만들어서 필터링할 것 들을 넣어주고
' 사용된 이유는 계산할 수식에서 문자(숫자)와 연산자를 분리하기 위해 사용했습니다.
NSArray *result_temp = [temp componentsSeparatedByCharactersInSet: filter];
NSNumber *intarr;
for(intarr in result_temp)
{
st_num[nP++]=intarr;
NSLog(@"%@ %@",intarr,st_op[nP]);
}
실제 사용된 소스입니다. 참고용도..
[ 문자열을 double형으로 변환하기 ]
[st_num[ key ] doubleValue] ;
' int 형은 intValue 라는걸 유추할 수 있겠습니다.
[ 문자열에 숫자(int,float,double 형등) 을 넣기 ]
st_num[ key ] = [ NSString stringWithFormat:@"%lf",outcome];
대충 함수는 정리된 것 같습니다.
본론으로 넘어가서
Calculator.h 에 사용할 변수와 액션들을 선언해줍니다.
UITextField *showResult; // 수식을 저장하고 있는
UITextField *Result; // 계산한 값을 출력하는
outlet과 연결하기 위해서
@property (nonatomic, retain) IBOutlet UITextField *Result;
@property (nonatomic, retain) IBOutlet UITextField *showResult;
는 해줍시다.
' .h에 선언한 property들은 .m에서 @synthesize로 반드시 선언해주어야 합니다.
ex) @synthesize showResult,Result;
그리고 각 버튼을 눌렀을 때 사용되는 액션들 입니다.
-(IBAction)pressedNumber:(id)sender;
-(IBAction)pressedCalculate:(id)sender;
-(IBAction)pressedClear:(id)sender;
-(IBAction)pressedDel:(id)sender;
-(IBAction)pressedResult:(id)sender;
-(IBAction)pressedPoint:(id)sender;
보시다 시피
각 숫자를 눌렀을 때
연산자를 눌렀을 때
C (clear)를 눌렀을 때
Del 키 를 눌럿을 때
= 키를 눌렀을 때
. 키를 눌렀을 때 가 되겠습니다.
솔직히 모든 키를 하나의 액션에 넣은다음 if문을 통해서 구분을 지어도 되는데
무엇이 더 귀찮을 지는 해보시면 앏니다.
그러면 Command+s로 저장을 한번 누르고 xib에서 연결을 하겟습니다.
먼저 각 버튼에 대해서 File's Owner와 연결을 합니다
각 버튼을 ctrl 키를 누른 상태에서 File's Owner를 연결하고 버튼에 맞는 액션과 연결을 해주시면 됩니다.
그리고 나서 @property로 선언한 아웃렛과 연결을 하겠습니다
전에 한거랑은 반대로 ctrl 키를 누른 상태에서 선언한 UITextField 들을 연결해주시면 됩니다.
연결이 잘 되었는지 확인하는 방법은
.m 파일에서 각 액션들을 정의해 주어서
NSLog 로 확인하시면 됩니다.
'제2외국어 > iOS' 카테고리의 다른 글
[Storyboard] Segue 로 페이지 전환 (소스로) (2) | 2011.12.09 |
---|---|
iPhone 계산기만들기(3) (0) | 2011.12.06 |
iPhone 계산기만들기(1) (0) | 2011.12.06 |
xcode 4.2가 되면서 달라진 점. (0) | 2011.10.31 |
xcode 4 버전 이상부터 프레임워크 추가하는 방법. (2) | 2011.10.26 |