오늘의 주제

1. 계산기 기능 넣기
2. 메모장 화면 구성 바꾸기



쉰 한 번째 시간입니다.^^

지난 번에 만들어 놓은 계산기 아직 잘 갖고 계신가요?ㅎㅎㅎ
이제 계산기 로직을 완성해 볼 차례입니다.

아............. 지금 제가 글을 쓰고 있는 이 시간은 아직 훈련소에 가기 전이지만, 전 지금 훈련소에서 뒹굴고 있겠군요 ㅋㅋㅋㅋㅋㅋㅋㅋ

뭐, 응원의 한마디...는 볼 수 없겠지만 무탈히 돌아오도록 기도해주세요 ㅋㅋㅋㅋㅋ

2일 전인데 한달이라도 막상 가려니까 싱숭생숭 하네요 ㅋㅋㅋ

아마 들어가기 전까지도 계속 블로그 포스팅 예약을 하다 갈거 같은..ㅋㅋㅋㅋㅋㅋㅋㅋ

뭐 여튼 사설은 각설하고 시작해 봅니다~~~~~~~~~~~~~


# 계산기 기능 완성하기

일단, 지난번에 구현파일에 만들어 주었던 enum을 헤더로 옮겨옵니다. 거기에 FUNC_INVALID도 추가해줬어요 ㅎ

그리고 아래 interface에 enum 변수 하나를 만들어 주었구요~

enum이 뭔지 잘 모르겠다 하시는 분들은
2012/05/24 - [C] - C <20>. enum 

을 참고해 주세요 ㅎㅎㅎ


자, 이제 다시 구현파일로 넘어와서~

일단, 변수 초기화를 따로 메소드로 빼주었습니다. 왜냐면 2번 이상은 사용할 것 같거든요 ㅎㅎㅎ C버튼 눌렀을 때랑, 처음 viewDidLoad되었을 때. 생각난김에 메소드로 빼주고 viewDidLoad에서 호출도 해 줍니다.


자, 그리고 화면에 숫자를 출력해 줄만한 메소드도 하나 따로 빼줍니다 ㅎㅎㅎ


자, 그리고 이제 계산을 해 줄 메소드를 하나 만들어 줍니다. 아마도 = 버튼을 눌렀을 때 요녀석이 실행이 되겠죠?ㅎㅎㅎ
(현재 로직은 약간 틀린 부분이 있습니다만, 아래쪽에서 조금 수정을 해 줄거예요. 일단 요렇게 작성해 주세요..ㅎㅎㅎ)


자, 그리고 숫자 버튼을 눌렀을 때 동작할 메소드를 채워넣어 줍니다.


자, 그리고 기능키를 눌렀을 때 어떻게 동작할지를 버튼과 연결된 메소드에 채워넣어 줍니다 ㅎㅎ
switch문이 아직도 헷갈리는 분들은
2011/12/14 - [C] - C <7>. 조건문(2) switch 
참고 해 주시면 좋을 것 같네요 ㅎㅎ 


자, 그리고 나서 실행 해 봅니다. command + R
어때요 ㅎㅎㅎ 잘 동작하나요?
이것저것 해보다 보면 뭔가 약간 안맞는게 있습니다...ㅎㅎㅎ
네......그렇죠 ㅎㅎㅎ
2 + 3 하고 = 을 누르면 5가 나옵니다.
그리고 또다시 = 을 누르면 8이 나와야 하는데 7이 나올거예요... 흐음... 로직에 문제가 있다!!!!!!!!!!!! (제가 새벽에 정신이 혼미한 상태로 하다보니...)ㅋㅋㅋㅋㅋㅋㅋㅋㅋ

그래서 수정해 줬습니다.
헤더파일에 와서 새로운 flag 변수를 하나 만들어 주었구요~


구현파일에 와서 약간의 조건을 추가해 줍니다. 기존에 변수에 저장하던 값들도 살짝 바꿔줬구요.


그리고 계산부분의 변수들도 살짝 바꿔줬습니다 ㅎㅎ



자, 그리고 다시 실행!!!!!!

어떠세요? 잘 동작하나요?

제가 계산기를 잘 안써봐서 로직을 생각해 보려고 한참 쑈를 했었더랬죠... 계산기 한 번만 켜서 해보면 되는것을...ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

여튼 뭐 이렇게 초간단 계산기가 완성되었습니다~!

가로 모드로 바꾸면 공학용 계산기가 나오게도 해보고 싶었으나... 시간이 없는 관계로(낼모레 입소... 'ㅁ') 메모장으로 넘어가 볼게요 ㅋㅋㅋ



# 메모장 화면구성 변경

지난번에 메모장 화면도 조금 만들어 놨었는데요, 살짝만 바꾸도록 합니다 ㅎㅎ


다들 그림만 보고 이해는 하셨으리라 믿습니다 ㅎㅎㅎ

자, 이제 본격적으로 메모장 구현은?

다음 포스팅에......ㅋㅋㅋ



by yagom

facebook : http://fb.yagom.net

twitter : http://twitter.yagom.net ( @yagomsoft )

p.s 제 포스팅을 RSS 피드로 받아보실 수 있습니다.

RSS Feed 받기   


↓↓↓저 열심히 썼는데 손가락 한방 꾹 눌러주고 가시는 건 어떨까요? 로그인이 필요 없습니다. ^~^ 고맙습니다~ ↓↓↓ 






Posted by yagom

댓글을 달아 주세요

  1. 스테디셀러 2012.09.19 16:12  댓글주소  수정/삭제  댓글쓰기

    잘 보고있습니다 :) 그런데 소숫점 처리는 어떻게 해야 할까요?

  2. 컴맹 2012.09.24 18:53  댓글주소  수정/삭제  댓글쓰기

    와~ 정말 잘 됩니다.^^
    정수와 소숫점자리 처리 모두 잘되구, 사칙연산 이상없이 계산 잘됩니다.ㅎㅎ
    오늘도 정말 많이 배우고 갑니다.~^^
    지금쯤 고생이 많겠네요.ㅠㅠ
    그래도 24일이니까 일주일만 참으세요.ㅎㅎ
    복귀하면 치킨에 맥주라도 한잔?? ㅎㅎ (당연히 제가 살께요.^^)

    • Favicon of https://blog.yagom.net BlogIcon yagom 2012.10.03 21:51 신고  댓글주소  수정/삭제

      므하하
      건강하게 잘 돌아왔습니다~!
      치맥 사주신다면야!
      정중히 흡입하겠습니다 ㅎㅎㅎ
      신나네용~~~~~~~으히히

  3. 마스터 2012.11.19 21:36  댓글주소  수정/삭제  댓글쓰기

    이거 [self setNumberLable:resultValue];
    랑 [self setNumverLavle:currentInputValue];
    에서 오류 나네요

  4. 시우아빠 2012.11.20 22:46  댓글주소  수정/삭제  댓글쓰기

    11월 초 부터해서 51번 강의까지 다 끝났네요~
    메모장은 아무래도 시간이 안되셔서 여기서 마무리 하신거 같아서 아직 부족한게 많지만
    저도 기초 강좌는 여기서 마무리하고 본업인 게임쪽으로 넘어가려고 합니다.
    앞으로하시는 다른 강의도 열심히 보겠지만
    우선은 지금까지 강의를 통해서 도움을 많이 받았기에 인사를 한번 드려야 할거 같아서요^^
    자기 시간 쪼개서 이렇게 공개강좌를 한다는 쉬운일이 아닐텐데 공익을 위해서 이렇게 노력해주셔서
    저같은 사람들은 얼마나 도움이 많이되는지 모릅니다.
    책을 통해서도 배울수 있지만 이렇게 게시판을 통한 강의도 나름대로 특수성이 있고
    특히 Yagom님의 강의 경우에는 쉽게 이해할수 있는 말로 많이 풀어 써 주셔서 이해도 쏙쏙 잘되고 여기까지 쉼없이 달려 올 수 있었던거 같습니다.
    다시 한번 감사의 말씀 드리고 앞으로도 좋은 강의 많이 부탁드리겠습니다.^^

    • Favicon of https://blog.yagom.net BlogIcon yagom 2012.11.21 20:38 신고  댓글주소  수정/삭제

      이렇게 좋은 덧글 남겨주셔서 저도 정말 영광입니다.
      앞으로도 종종 들러서 글도 남겨 주세요^^*
      정말 고맙습니다!

  5. Favicon of https://ahnfilm.tistory.com BlogIcon AhnFilms 2012.11.23 10:31 신고  댓글주소  수정/삭제  댓글쓰기

    메모장 포스팅 기다리겠습니다 그리고 항상 잘 보고 있습니다

  6. 김민국 2013.01.22 23:31  댓글주소  수정/삭제  댓글쓰기

    7번강의까지 보고 마지막엔 뭘하나 볼려고 봤는데
    정말 좋은 강의 포스팅 해주셔서 감사해요^^

    혹시 프로젝트의 기획 설계와 구현
    이런 전체적인 것을
    따라하면서 배울수잇는 강의를 하실생각은없으신가요?^^ㅋㅋㅋ
    무지 힘든강의겠군요..ㅜㅜㅋㅋㅋ

    • Favicon of https://blog.yagom.net BlogIcon yagom 2013.01.23 09:39 신고  댓글주소  수정/삭제

      안녕하세요, 이렇게 덧글 주셔서 정말 고맙습니다 :)

      음... 그것은 프로젝트 성격과 앱 스타일에 따라서 변동이 많은 부분이라 쉽사리 딱 이게 좋은 방법이다 하기에는 무리가 있을 것 같아요^^;

  7. 마스터 2013.01.26 19:24  댓글주소  수정/삭제  댓글쓰기

    야곰님 배터리 용량을 가져오는 매소드 같은건 없나요?

  8. 안녕하세요 2013.03.31 23:09  댓글주소  수정/삭제  댓글쓰기

    항상 이 블로그에서 많은 자료를 얻는거 같아 기쁨니다ㅎㅎㅎ
    하나 물어볼게 있는데, 이전에 띄어논 AlertView를 어떤 변화(타이머 종료, 로딩 종료 등)가 있으면 사라지게 하는 방법도 있나요? 메소드가 있을거 같은데 아무리 찾아도 없네요 ㅜㅜ

    • Favicon of https://blog.yagom.net BlogIcon yagom 2013.04.02 17:13 신고  댓글주소  수정/삭제

      안녕하세요 :)
      어떤 변화가 감지되는 시점에서 alertView를 dismiss 시켜주시면 됩니다.
      :) 추가적으로 더 궁금하신게 있다면 말씀해 주세요

  9. devtest 2013.07.11 13:20  댓글주소  수정/삭제  댓글쓰기

    안녕하세요 야곰님 오늘 또 왔네요ㅎㅎ
    혹시 xcode를 이용해서 콤보박스를 만들 수는 없을까요?
    아무리 생각해도 만들 방법을 모르겟네요ㅜㅜ

    • Favicon of https://blog.yagom.net BlogIcon yagom 2013.07.11 16:12 신고  댓글주소  수정/삭제

      콤보 박스보다는 아무래도 picker view가 많이 사용되지요...^^

      굳이 콤보박스를 구현해야 한다면 오픈 라이브러리들을 사용해 보셔야 할 것 같습니다 ㅎㅎ

      https://www.cocoacontrols.com/search?utf8=%E2%9C%93&q=combo

  10. 하이앟 2013.09.30 23:00  댓글주소  수정/삭제  댓글쓰기

    좋은 강좌 정말 감사합니다~^^
    무지 많은 도움 받고있어요.
    그런데..ㅎㅎ메모장 구현은 언제쯤?*^^*~기다리고 있을게염~><

  11. 키르미느 2013.10.15 02:50  댓글주소  수정/삭제  댓글쓰기

    야곰님 여쭤볼게 있는데
    제가 네비게이션 기반 실습을 해 보려고 한느데
    첫 화면을 SNS같은 일반 로그인창으로 만들어서 로그인을 하면 로그인된 첫 화면으로 갈텐데
    네비게이션 바가 달려 있어서 다시 백 버튼을 누르면 아이디 및 패스워드 (로그인창)창으로 다시 갈텐데
    로그인된 첫화면에 네비게이션 바를 없애는 게 맞을까요? 로그인 시 아예 다른 뷰를 생성하는 게 맞는 건가요?

    혹시 전자가 맞다면 네비게이션 바, 즉 백버튼 사라지게 하는 건 어떻게 하는 건가요?

    • Favicon of https://blog.yagom.net BlogIcon yagom 2013.10.15 11:24 신고  댓글주소  수정/삭제

      안녕하세요 :)

      때에 따라 두 가지 방법 중에 선택해서 사용합니다.

      주로 로그인 화면은 모달로 많이 띄우기도 하지만 네비게이션으로 처리할 수도 있습니다.

      네비게이션 프로퍼티 중에 navigationBarHidden 이라는 프로퍼티 값을 NO로 설정해 주시면 네비게이션바가 보이지 않습니다 :)

  12. 키르미느 2013.10.16 12:25  댓글주소  수정/삭제  댓글쓰기

    그런데 로그인 화면을 모달로 띄우라고 하셨는데 자세히 알 수 없을까요 소스라도 ㅠㅠ

    두 번째 질문!! ios 7에 xib 파일은 main story 보드로 통합 된 듯?? ㅠㅠㅠㅠ

    • Favicon of https://blog.yagom.net BlogIcon yagom 2013.10.16 18:14 신고  댓글주소  수정/삭제

      ^^;; 로그인화면 샘플코드는 검색하셔도 종종 나올 것 같구요, iOS 7에서는 기본적으로 스토리보드가 생성됩니다. 수동으로 xib를 사용할 수도 있구요.

      모달로 띄우는 방법은 UIViewController 클래스의
      - (void)presentViewController:(UIViewController *)viewControllerToPresent animated:(BOOL)flag completion:(void (^)(void))completion
      메소드를 참고해 보세요~

  13. 으앙 2013.11.06 22:07  댓글주소  수정/삭제  댓글쓰기

    레이블에 숫자표시가 안되네요 ㅠ


오늘의 주제

1. 실전 프로젝트 생성



벌써 쉰 번째 시간입니다.^^

많이도 써왔나 보네요...ㅎㅎ
벌써 오십번 째 글이라니 +_+

이거 한 편 쓰는데 시간이 얼마나 오래걸리는지 여러분들을 모르실거예요..ㅋㅋㅋㅋㅋㅋㅋ

이제 실전 프로젝트(?) 라고 하기는 좀 그렇지만 예제 앱을 하나 만들어 볼까해요.
물론 저는 디자인을 하지 못하기 때문에 그냥 있는 그대로의 녀석들을 쓰겠지만 말예요..ㅎㅎ

간단한 계산기랑 메모장(?) 정도를 만들어 볼까해요.
단순히 감을 익히는데에는 큰 무리가 없을 것이라고 봅니다.

스토리보드를 원하는 분들이 많이 계셔서, 간단한 앱이기도 하니까 스토리보드와 ARC를 사용하여 진행하도록 하겠습니다.

iOS5.1 Xcode 4.3.3 기준입니다.

오늘의 간단 결과물입니다.
미리보기 +_+ㅋㅋㅋ


한 번 출발해 봅니다 ㅎㅎ

# 프로젝트 생성

우리는 두 개의 탭을 가진 탭바 기반 어플리케이션을 만들거예요.


스토리보드와 ARC사용에 체크를 했구요~



# 화면구성하기

짜잔~ 제 포스팅에서 처음으로 스토리보드가 등장을 했군요..ㅎㅎㅎ
저는 좀 구식이라 스토리보드는 저도 아직 잘 사용할 줄 모릅니다 ㅎㅎ 
눈에 보여서 편하긴 한데, 그만큼 뭔가 댓가가 있겠죠?ㅎㅎ 여튼 잡소리는 그만하고, 계속 가 봅니다 ㅋㅋㅋㅋㅋㅋ 


자, 일단 First View는 계산기로 사용하려고 해요.

뷰 속성에 들어가서 배경색을 그럴싸하게 좀 바꿔주고~ (그래봐야... 뭐... 쩝..ㅋㅋㅋㅋㅋㅋㅋ 그래도 기본만으로 뭔가 할 수 있게 해준 애플의 디자인 센스는 좋습니다ㅋㅋ)


First View라고 써있던 라벨의 위치와 크기를 적절히 조절해주고 오른쪽 정렬~ 그리고 0으로 세팅해줍니다 ㅎ


자, 그리고 뭔가 계산기처럼 그럴싸하게 버튼들을 넣어주세요 ㅋㅋㅋ


그리고 어시스턴스 모드로 전환해서 아울렛 연결하는 방법 다들 아시죠?ㅎㅎㅎ
오른쪽 버튼 드래그 또는 컨트롤 키 누르면서 드래그!!
라벨의 property 생성해 줍니다~
요게 잘 이해가 안되신다면?
2012/04/03 - [iOS Dev/깨알 Tips] - Xcode4 xib의 객체 소스파일과 쉽게 연결하기

를 참고하시면 되겠습니다 ㅎㅎ


그리고 두번째 탭에 있던 뷰도 텍스트뷰 하나 올려주시고, 버튼 두개 올려서 아울렛이랑 액션 연결 해 주세용~ 


자. 이거 좀 헷갈리실 수 있는데, 0부터 9까지 한 메소드에 연결을 할 거예요.
0에서 액션을 하나 생성해 주시고, 1~9까지 같은 메소드 자리로 연결하시면 됩니다. 자세한 설명은 그림에~! 
점(.)을 포함한 기능키들은 아래에서 또 따로 해줄거예요~ 



자, 기능키들도 하나의 액션 메소드에 연결해 줍니다. 방법은 동일해요~


자, 그리고 버튼마다 태그를 지정해 줍니다.
0번 버튼은 0
1번 버튼은 1...
9번까지 태그를 지정해 줍니다. 



그리고 기능버튼들도 마찬가지 입니다.

 
+ : 100, - : 101, * : 102, / : 103, C : 104, = : 105, . : 106


자, 이렇게 106번까지요 ㅎ


자, 이렇게 화면구성은 대강 마무리 된 것 같군요~

그럼 계산기로 사용될 FirstViewController에 와서 코딩을 좀 해봅시다 ㅎㅎ
일단 사용하여야 할 변수들을 선언해 주시구요.
추후에 수정하였는데 CGFloat이 아니라 double로 선언해주세요!!! 꼭이요!!!



아까 태그달았던 버튼들 나중에 번호 헷갈릴게 분명합니다.
벌써부터 헷갈리는데요?ㅎㅎ
enum을 사용하여 우리가 알아보기 쉽게 만들어 줍시다.

내려와서...
변수 초기화 잊지 말아주시구요 :)
숫자 버튼을 눌렀을 때 동작하는 메소드 부분을 구현해 봅시다.
자세한 설명은 역시나 주석에 ^^*

추가적으로 설명하지 않은 것은 pow라는 녀석인데,
pow( x, y )라고 해주면 x의 y제곱을 구해주는 함수입니다. ㅎ

그리고 또! %.0lf,  %lf 등이 무슨말인지 잘 모르겠다 하시는 분들은 아래 포스팅을 참고하세요ㅎㅎ
 
2011/12/05 - [Objective-C] - Objective C <4>. 실수 표현 방법
2011/12/03 - [Objective-C] - Objective C <3>. 변수. Variable



자... 여기까지 작성하고 한 번 실행해 보세요~

화면에 숫자가 제대로 표시되나요?ㅎㅎ

아 물론 소수점이 찍히는 기능키는 코딩하지 않았기 때문에 동작을 하지 않지요 ^^ 

자, 오늘은 여기까지 해볼게요...ㅎㅎㅎ

신나지 않나요?

물론 전 지금 훈련소에서 뒹굴고 있겠죠...ㅋㅋㅋ

어차피 포스팅은 예약 되어 있으니까 다음에 또 뵙도록 해용 >_<



by yagom

facebook : http://fb.yagom.net

twitter : http://twitter.yagom.net ( @yagomsoft )

p.s 제 포스팅을 RSS 피드로 받아보실 수 있습니다.

RSS Feed 받기   


↓↓↓저 열심히 썼는데 손가락 한방 꾹 눌러주고 가시는 건 어떨까요? 로그인이 필요 없습니다. ^~^ 고맙습니다~ ↓↓↓ 




Posted by yagom

댓글을 달아 주세요

  1. 컴맹 2012.09.24 17:22  댓글주소  수정/삭제  댓글쓰기

    오~~ 드디어 스토리보드도 하시는군요.ㅎㅎ
    스토리보드도 관심은 있지만, 기본 UI 도 사용법이 서툴기 때문에 접근을 못했었는데.^^
    그런데 현재 소스상으로는 positionNum값이 0미만일 경우가 없기때문에 else문은 실행이 되지 않겠네요. (소숫점 버튼에 대한 처리가 없기때문에...^^;)
    뭐, 다음강좌에서는 0미만일경우가 처리가 되어 else문이 사용되겠죠.
    좋은 강좌 잘보고 갑니다.~~~^^

  2. 21 2012.11.10 01:31  댓글주소  수정/삭제  댓글쓰기

    저.... 야곰님 질문이 잇는데여 ㅎㅎ
    탭바 기반에서 탭바가 안보이도록 할순없나요ㅜ..?

    • Favicon of https://blog.yagom.net BlogIcon yagom 2012.11.11 15:46 신고  댓글주소  수정/삭제

      안녕하세요 21님~!
      방문해 주셔서 고맙습니다 :)
      음... 탭바 기반에서 탭바가 안보이게 하려고 하신다구요^^;
      처음부터 탭바 기반으로 작성하지 않는 방법이 있지만...
      탭바가 있는 상태에서 탭바를 안보이게 하려면 setHidden 메소드를 이용하시면 될 것 같은데요~^^
      탭바 이름이 tabBar라면
      [tabBar setHidden:YES];
      이런식으로요~^^

  3. 시우아빠 2012.11.20 16:19  댓글주소  수정/삭제  댓글쓰기

    드디어 실전이군요 ^^ 이제 곧 마무리네요~

  4. 117 2013.07.24 01:37  댓글주소  수정/삭제  댓글쓰기

    탭바에서 first나 second같이 이름써져있는거 이름은 어떻게 바꾸는 건가요ㅎㅎ?;;

  5. 2014.06.08 01:19  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다