본문 바로가기

iOS Dev/함께해보기

iOS개발하기 #37. UISearchDisplayController(3) <UITableView, UITableDataSource>


오늘의 주제

1. 테이블 뷰에 파싱결과 뿌리기


서른 일곱 번째 시간입니다.^^

지난 번에는 웹에 자료를 요청하고 JSON으로 결과를 받아 파싱하는 과정까지 해 보았습니다.
잘 실행 되셨나요?
계속해서 코드의 양이 늘어나고 어려워 지고 있습니다 +_+
코드의 양도 많고 해야 할 것도, 처리해 줘야 할 것들도 많기 때문에 코드에 일일히 설명을 자세히 달기가 더 어려워지고 있습니다 ㅠ_ㅠ

여러분께서 부족한 부분은 질문을 주셔서 채워주셔야 합니다~!

그럼 오늘 또 차근차근 스텝을 밟아 나가 볼까요?ㅎ

렛츠고~~~~~~~~~


# 테이블뷰에 결과 띄워주기

자, 파싱된 결과를 활용해 주어야 하기 때문에 적절히 딕셔너리와 배열 포인터를 헤더에 선언해 줍니다.


변수를 만들어 줬으면 초기화와 마무리는 꼭 해주어야 하는거 잊지 않으셨죠?ㅎ


그리고 조금 더 편하게 읽을 수 있도록 enum 하나를 만들어 주었습니다.
enum에 대해 잘 모르시겠다구요?
2012/05/24 - [C] - C <20>. enum 요녀석을 참고해 주세요 ㅎ


그리고 이제 본격적으로 코딩에 들어갑니다~
지난 번에 요청을 해서 결과를 딕셔너리로 받아왔죠?
그녀석을 이제 적절히 포인터 변수에 넣어주고, 우리가 정말로 필요로 하는 item 녀석들을 따로 보관해 주기 위해서 Mutable Array를 만들어 줍니다.
우리가 웹에 요청하였을 때 반환되어 오는 데이터들에 대해 궁금하시다면 http://dna.daum.net/apis/search/book 에서 자세히 확인해 보세요 ㅎ


그리고 재검색을 할 때에는 지난 자료들은 필요가 없어졌으니 다시 초기화 해줄 필요가 있어서 초기화 메소드를 따로 만들어 주었습니다.
그래서 다시 검색을 하고자 할 때 초기화 메소드를 먼저 호출해 주고 시작하게 했습니다.


또한 우리는 한꺼번에 모든 검색결과를 보여줄 수 없으니 일부분만 검색 결과를 받아오게 됩니다. 그런데 남은 검색결과가 더 있다면 테이블의 맨 아래 셀을 눌렀을 때 데이터를 더 불러오도록 하려고 매번 검색 후에 이것이 검색이 끝났는지 체크를 합니다. 그 메소드를 구현해 주었구요.
본격적으로 테이블 데이터소스 코드를 넣어줍니다.
간략한 설명이 코드와 함께 주석으로 있으므로 참고하시구요...
데이터 소스 메소드들의 리턴값(반환값)들로 테이블이 움직인다고 해도 과언이 아닙니다. 동작을 잘 파악해 보도록 하세요.
참고로 return ... 이 호출되게 되면 그 메소드는 반환값을 전달한 후 더이상 진행되지 않고 끝나버립니다.
이해가 되지 않는 부분이 있다면 5번 더 코드를 해석해 보시고 더 생각해 보세요. 그리고 정 모르겠으면 그 때 댓글 주세요 ㅎ 스스로 연구해 봐야 실력이 팍팍 늘어요 ㅎ



이제 거의 다 왔습니다 ㅎ
데이터소스의 마지막 메소드를 이렇게 채워줍니다.
바로 각각의 셀(테이블의 칸칸)을 만들어 주는 메소드입니다.
지난 번에 복사해온 코드에서 약간 변경이 되었으니 처음부터 하나하나 잘 코딩해 보세요.
여기서도 마찬가지로 retrun 이라는 키워드가 나오면 반환값을 주고 메소드는 종료되어버립니다.
왜 중간에 뜬금없이 마지막 셀을 체크하는 조건문이 나왔는지 잘 생각해 보세요.


자, 이렇게 필수 코딩은 마쳤구요, 마지막으로 아까 위에서 만들어준 초기화 메소드로 처음 초기화와 마무리를 세줄에서 한 줄로 다시 간략화 해줬습니다. ㅎ 이것이 메소드의 힘이죠? >_<ㅋ


실행하고 검색해 보았습니다.
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
아 근데 왜 이따위로 나오죠?ㅋㅋㅋ
저도 잘 모르겠습니다 +_+
일단 대충 뭔가 맞는거 같긴 한데 왜 이렇게 나오는지는 저도 몰라서 급 패닉상태에 빠졌습니다.
이번 포스팅은 제가 다 해보고 포스팅 하는게 아니라 저도 해보면서 포스팅 하는거라 이런 결과가 나왔네요 =_=ㅋㅋㅋ
다음 오픈 API도 처음 써보는거라..ㅋㅋㅋ
여하튼 뭐 이런식으로 나왔습니다!!ㅋ


다음번에는 책의 대표이미지를 웹에서 불러와서 셀에 넣어주는 과정을 해 볼게요 ㅎ

다음 포스팅도 기다려 주실거죠? +_+ㅋ

아... XML은 언제하지..ㅋㅋㅋㅋㅋㅋ 곰방할게용~


by yagom

twitter : @yagomsoft

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

RSS Feed 받기   


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