SlideShare a Scribd company logo
1 of 34
아이패드에 대한 고려사항
     발표자 : 공지훈
   sagehoon@gmail.com
해볼것!!
기본적으로 제공하는 아이패드 뷰의 구조

전세계 가카들을 위한 앱

기존구조에서 기능추가

새로운 버튼추가해서 기능추가
아이패드는 화면이 크다.
아이폰과는 다르다.
보기좋게 넓게 쓰자.
그래서 보통 이렇게 쓴다. - 분활뷰
팝오버 뷰
한번 해보자
대략 줄거리
프로젝트 생성후 Group & files를 보면


RootViewController는 내비게이션 구조의 최상
위 레벨 정의
DetailViewController는 내비게이션 항목을 선택
할때 오른쪽 영역에 크게 보여줄 내용을 정의
기기가 회전할경우 분활뷰와 팝오버뷰 형태로
변경된다.
빌드 후 돌려보자.
빌드하면 아이패드 앱이 뜬다.
MainWindow.xib
object들의 구조




커넥션 인스펙터
DetailView.xib



MainWindow.xib가 로드되고 상세뷰 컨트롤러가 생성될때 이 컨트롤러가 같은
nib에서 GUI를 찾지 않고 이 필드에 지정된 nib파일을 로드한다는 뜻
이렇게 하면 어떤뷰가 메인뷰에 속하고 어떤뷰를 별도 nib파일로 관리할지 지
정할수 있다.

DetailView.xib는 MainWindow.xib안에 속한다고 봐도 된다.

이렇게 하는 이유는 코드와 관련없는 설정정보가 코드사이에 끼는것을 막을수
가 있다.
코딩과 화면을 분리할수가 있다.
PresidentAppDelegate.h




Window - 전체
UISplitViewController - 앱의 최상위 껍데기
rootViewController - 네비게이션 뷰 아래 있는 디테일 (왼쪽 디테일)
detailViewController - 디테일뷰(오른쪽 디테일)
PresidentAppDelegate.m
RootViewController.h
RootViewController.m
소스코드 참조 책 413, 414p
RootViewController.m의 주요 부분
contentSizeForViewInPopover
- 뷰컨트롤러가 팝오버 컨트롤러에 대한 디스플레이를 제공할때 사용할 크기를
설정한다.
이 사각형은 가로 너비가 최소 320 픽셀이어야 하지만 이와 별개로 크기는 얼
마든지 원하는 대로 설정할수 있다.
shouldAutorotateToInterfaceOrientation
- 디스플레이가 옆으로 뒤집을때 방향 바꾸게 할거냐 말거냐 이 처리
방향 바꾸기 싫음 YES
tableView:didSelectRowAtIndexPath
- 앞에서 사용자의 행선택에 반응하는 테이블 뷰 컨트롤러 구현시 이메서드에
서 새로운 컨트롤러 생성하고 이를 내비게이션 컨트롤러의 스택에 쌓았다.
하지만 이 애플리케이션에서는 보여주려는 컨트롤러가 이미 화면에 배치된 상
태. 이컨트롤러는 바로 xib파일에 들어 있는 DetailViewController다.
따라서 여기서는 DetailViewController 인스턴스에게 보여줄 디스플레이만 알
려주면 된다.
DetailViewController.h




DetailViewController는 앞에서 (RootViewController클래스 내에서) 본
detailItem 속성이외에
nib파일에 있는 GUI컴포넌트를 연결하기 위한 두개의 아웃렛(toolbar 및
detailDescriptionLable)과 더불어 잠시후 볼 팝오버 컨트롤러에 대한 인스
턴스 변수도 갖고 있다.
DetailViewController.m
소스코드 참조 책 416, 417p
내부 클래스


클래스 내에서만 사용하고 헤더 파일을 통해 다른 클래스에게 노출되지 않는
속성과 메서드를 정의할수 있다.
여기서는
1. 앞에서 선언한 인스턴스 변수를 활용하는 popoverController속성을 선언
2. 디스플레이를 업데이트 할때마다 호출할 유틸리티 메서드를 선언

popoverController의 속성의 용도는 뒤에 가서....
setDetailItem 메서드




앞에 세터 프로퍼티와 신디사이즈를 만들었는데 왜 또 세터 메서드를 만들까?
여기서는 사용자가 세터메서드 호출시 임의의 동작을 해야하기 때문에 따로
정의한것이다.
내용 - popoverController가 (nil이 아닌경우 즉) 있는경우
이를 사라지게하는 내용.
popoverController는 어디서?
아이패드가 세로모드로 회전할때 호출되는 메서드




- UIPopoverController : 분할뷰의 왼쪽에 있는 뷰를 포함하도록 미리 설정된 컨
트롤러
- UIBarButtonItem : 이 팝오어뷰를 보여주도록 설정된 버튼이다.

GUI에서 UIToolBar가 포함된경우- 버튼항목을 툴바에 포함시키기만 하면 사용
자가 위의 버튼을 눌러서 네이게이션 뷰를 호출할수있다는것.
GUI에서 UITooBar가 없는 경우- 팝오버 컨트롤러는 여전히 인자로 넘어오므로
이를 GUI요소에 대입하면 해당요소를 통해 팝오버뷰를 보여줄수있다.
popoverController를 회수
사용자가 다시 가로모드로 전환시 호출




이 시점에서는 분활뷰 컨트롤러는 뷰의 왼쪽영역을 다시 그려야 하므로 앞에서
가져온 UIBarButtonItem을 제거한다.
PresidentList 시나리오
1. PresidentList.plist 파일을 Suppoting Files폴더에 옮긴다.
2. RootViewController.h에 NSArray presidents객체 및 property를 생성한다.
3. RootViewControlle.m에 synthesize로 presidents객체를 받는다.
4. viewDidLoad메서드에 앞서 추가한 plist에서 대통령정보를 옮겨서 NSArray presidents에 옮겨 담
는다.

delegate메서드부분

5 행개수를 지정하는 numberOfRowsInSection 에서 presidents변수안의 데이터 갯수만큼 지정하
도록 변경.
6. 각셀에서 대통령 이름을 볼수있게 cellForRowAtIndexPath에 NSDictionary *president = [self.
presidents objectAtIndex:indexPath.row]; 추가
- cellForRowAtIndexPath : 테이블에 데이터를 추가하기위한 UItableViewCell을 만드는 메서드
7.didSelectRowAtIndexPath 상세뷰 컨트롤러 에 URL을 넘겨준다.
DetailView 시나리오
상세뷰에서 url대신에 좀더 유용한정보를 보여주고 싶다.
1. UIWebView webView,property를 h 에서 선언하고 m에서 sythesize로 받는
다.
2. detailView.m의 configureView메서드로 이동해서 url를 webView객체에 넣고
로드 시킨다.
3. barButtonItem.title을 바꾼다. 버튼 이름바꾸는것이다.
4. viewDidUnload dealoc에서 webView객체를 릴리즈시킨다.
언어변경 버튼추가
내용 :툴바 우측의 버튼이 생성되고 버튼을누르면 언어별 목록이 담긴 테이블
뷰가 뜬다.
해당 테이블뷰의 언어 선택시 디테일뷰의 내용이 그 해당언어로 새로고침 된
다.

현재는 UIPopoverController만 있는 상황
새로운 내용을 추가하기 때문에 새로운 UIViewController를 생성하고 거기서
작업을 해야한다.
LanguageListController.h
viewDidLoad




팝오버시 보이는 테이블의 크기와 이름,코드를 정의
테이블뷰 기본 델리게이트 메서드




1.section 1개 셋팅
2.row viewDidLoad 에 셋팅한 코드수만큼 셋팅
3.cell에 넣을 언어명 추가
선택한 언어 넘겨주기


선택시 DetailViewController에 선택된 언어를 넘겨준다.
다시 DitailVIewController로



버튼,컨트롤러,넘겨받은 언어문자열




버튼눌렀을때의 액션
nib에서 button outlet등록
1. object library에서 FlexibleSpaceBarButtonItem을 선택해서 드래그앤 드랍을
한다.
2. 크기를 맞추고, 버튼이름을 Choose Language로 변경.
3. file's owner 선택하고 ctrl 드래그해서 touchLanguageButton메서드를 선택.
4. file's owner 선택하고 ctrl 드래그해서 버튼을 선택.
DetailViewController.m
1. import "LanguageListController.h"를 한다.
2. 앞서 정의한 프로퍼티와 메서드를 신디사이즈로 받고 메서드는 구현한다.
3. 앞서 Language컨트롤러에서 받은 언어 텍스트와 위키피디아 url을 합체시킬
내부 함수 modifyUrlForLanguage 를 구현단다.
4. setDetailItem에 modifyUrlForLanguage를 넣어서 url을 애초에 합체시키게
만든다.
그리고 기존의 버튼이 하나였다가 두개 가 되면서 팝오버가 하나가 되서 관련
테이블이 올라왔을때는 하나가 더올라올려고 하면 기존의 것을 사라지게하는
로직을 구현한다.

5.setLanguageString 최초에 설정된 언어선택을 위해서 만드는 메서드
4번에 추가한 메서드내용은 이미 로딩된 상태에서의 언어선택으로 인한 변동을
위해서
6. 버튼 메서드를 구현한다. 눌렀을경우 팝오버되면서 뷰가 뜨도록 하느 액션.
Q&A
감사합니다.

More Related Content

Similar to 10장 아이패드에 대한 고려사항

06 멀티뷰 애플리케이션
06 멀티뷰 애플리케이션06 멀티뷰 애플리케이션
06 멀티뷰 애플리케이션Wanbok Choi
 
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 모바일 앱 프로그래밍 기말평가 제출본
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 모바일 앱 프로그래밍 기말평가 제출본[방송통신대 컴퓨터과학과] 2020년 1학기 전공 모바일 앱 프로그래밍 기말평가 제출본
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 모바일 앱 프로그래밍 기말평가 제출본Lee Sang-Ho
 
Vue guide v0.1
Vue guide v0.1Vue guide v0.1
Vue guide v0.1DataUs
 
18 안드로이드 리스트뷰_속도향상
18 안드로이드 리스트뷰_속도향상18 안드로이드 리스트뷰_속도향상
18 안드로이드 리스트뷰_속도향상운용 최
 
Protocol Oriented Programming in Swift
Protocol Oriented Programming in SwiftProtocol Oriented Programming in Swift
Protocol Oriented Programming in SwiftSeongGyu Jo
 
아이폰 앱 패턴
아이폰 앱 패턴아이폰 앱 패턴
아이폰 앱 패턴조 용구
 
Dagger with multi modules
Dagger with multi modulesDagger with multi modules
Dagger with multi modulesYoung-Hyuk Yoo
 
REST API Development with Spring
REST API Development with SpringREST API Development with Spring
REST API Development with SpringKeesun Baik
 
Youtube를활용한app만들기
Youtube를활용한app만들기Youtube를활용한app만들기
Youtube를활용한app만들기DaeHee Jang
 
GMS 프로젝트 - Flutter
GMS 프로젝트 - FlutterGMS 프로젝트 - Flutter
GMS 프로젝트 - FlutterJongmini
 
190119 unreal engine c++ 입문 및 팁
190119 unreal engine c++ 입문 및 팁190119 unreal engine c++ 입문 및 팁
190119 unreal engine c++ 입문 및 팁KWANGIL KIM
 
[KGIT_EWD]class03 0322
[KGIT_EWD]class03 0322[KGIT_EWD]class03 0322
[KGIT_EWD]class03 0322jylee6977
 
Angular 2 rc5 조사
Angular 2 rc5 조사Angular 2 rc5 조사
Angular 2 rc5 조사Rjs Ryu
 
200819 NAVER TECH CONCERT 01_100만 달러짜리 빠른 앱을 만드는 비법 전수
200819 NAVER TECH CONCERT 01_100만 달러짜리 빠른 앱을 만드는 비법 전수200819 NAVER TECH CONCERT 01_100만 달러짜리 빠른 앱을 만드는 비법 전수
200819 NAVER TECH CONCERT 01_100만 달러짜리 빠른 앱을 만드는 비법 전수NAVER Engineering
 
100만 달러짜리 빠른앱 만드는 비법
100만 달러짜리 빠른앱 만드는 비법100만 달러짜리 빠른앱 만드는 비법
100만 달러짜리 빠른앱 만드는 비법SooHwan Ok
 

Similar to 10장 아이패드에 대한 고려사항 (20)

06 멀티뷰 애플리케이션
06 멀티뷰 애플리케이션06 멀티뷰 애플리케이션
06 멀티뷰 애플리케이션
 
자마린 iOS 멀티화면 컨트롤러_네비게이션 컨트롤러, 루트 뷰 컨트롤러
자마린 iOS 멀티화면 컨트롤러_네비게이션 컨트롤러, 루트 뷰 컨트롤러자마린 iOS 멀티화면 컨트롤러_네비게이션 컨트롤러, 루트 뷰 컨트롤러
자마린 iOS 멀티화면 컨트롤러_네비게이션 컨트롤러, 루트 뷰 컨트롤러
 
(닷넷,자마린,아이폰실습)Xamarin.iOS HelloWorld 실습_멀티화면,화면전환_Xamarin교육/Xamarin강좌
(닷넷,자마린,아이폰실습)Xamarin.iOS HelloWorld 실습_멀티화면,화면전환_Xamarin교육/Xamarin강좌(닷넷,자마린,아이폰실습)Xamarin.iOS HelloWorld 실습_멀티화면,화면전환_Xamarin교육/Xamarin강좌
(닷넷,자마린,아이폰실습)Xamarin.iOS HelloWorld 실습_멀티화면,화면전환_Xamarin교육/Xamarin강좌
 
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 모바일 앱 프로그래밍 기말평가 제출본
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 모바일 앱 프로그래밍 기말평가 제출본[방송통신대 컴퓨터과학과] 2020년 1학기 전공 모바일 앱 프로그래밍 기말평가 제출본
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 모바일 앱 프로그래밍 기말평가 제출본
 
Vue guide v0.1
Vue guide v0.1Vue guide v0.1
Vue guide v0.1
 
18 안드로이드 리스트뷰_속도향상
18 안드로이드 리스트뷰_속도향상18 안드로이드 리스트뷰_속도향상
18 안드로이드 리스트뷰_속도향상
 
Django View Part 1
Django View Part 1Django View Part 1
Django View Part 1
 
Protocol Oriented Programming in Swift
Protocol Oriented Programming in SwiftProtocol Oriented Programming in Swift
Protocol Oriented Programming in Swift
 
아이폰 앱 패턴
아이폰 앱 패턴아이폰 앱 패턴
아이폰 앱 패턴
 
Dagger with multi modules
Dagger with multi modulesDagger with multi modules
Dagger with multi modules
 
REST API Development with Spring
REST API Development with SpringREST API Development with Spring
REST API Development with Spring
 
Youtube를활용한app만들기
Youtube를활용한app만들기Youtube를활용한app만들기
Youtube를활용한app만들기
 
GMS 프로젝트 - Flutter
GMS 프로젝트 - FlutterGMS 프로젝트 - Flutter
GMS 프로젝트 - Flutter
 
Portfolio
PortfolioPortfolio
Portfolio
 
Nest js 101
Nest js 101Nest js 101
Nest js 101
 
190119 unreal engine c++ 입문 및 팁
190119 unreal engine c++ 입문 및 팁190119 unreal engine c++ 입문 및 팁
190119 unreal engine c++ 입문 및 팁
 
[KGIT_EWD]class03 0322
[KGIT_EWD]class03 0322[KGIT_EWD]class03 0322
[KGIT_EWD]class03 0322
 
Angular 2 rc5 조사
Angular 2 rc5 조사Angular 2 rc5 조사
Angular 2 rc5 조사
 
200819 NAVER TECH CONCERT 01_100만 달러짜리 빠른 앱을 만드는 비법 전수
200819 NAVER TECH CONCERT 01_100만 달러짜리 빠른 앱을 만드는 비법 전수200819 NAVER TECH CONCERT 01_100만 달러짜리 빠른 앱을 만드는 비법 전수
200819 NAVER TECH CONCERT 01_100만 달러짜리 빠른 앱을 만드는 비법 전수
 
100만 달러짜리 빠른앱 만드는 비법
100만 달러짜리 빠른앱 만드는 비법100만 달러짜리 빠른앱 만드는 비법
100만 달러짜리 빠른앱 만드는 비법
 

More from Jihoon Kong

파이썬3 17장 파이썬과 인터넷
파이썬3 17장 파이썬과 인터넷파이썬3 17장 파이썬과 인터넷
파이썬3 17장 파이썬과 인터넷Jihoon Kong
 
Python3 10장 문자열이야기
Python3 10장 문자열이야기Python3 10장 문자열이야기
Python3 10장 문자열이야기Jihoon Kong
 
Python3 11장 날짜이야기
Python3 11장 날짜이야기Python3 11장 날짜이야기
Python3 11장 날짜이야기Jihoon Kong
 
Iphone Core location
Iphone Core locationIphone Core location
Iphone Core locationJihoon Kong
 
코어 로케이션
코어 로케이션코어 로케이션
코어 로케이션Jihoon Kong
 
Python3 6장 모듈만들기
Python3 6장 모듈만들기Python3 6장 모듈만들기
Python3 6장 모듈만들기Jihoon Kong
 
Beginning iphone 4_devlopement_chpter7_tab_b
Beginning iphone 4_devlopement_chpter7_tab_bBeginning iphone 4_devlopement_chpter7_tab_b
Beginning iphone 4_devlopement_chpter7_tab_bJihoon Kong
 

More from Jihoon Kong (7)

파이썬3 17장 파이썬과 인터넷
파이썬3 17장 파이썬과 인터넷파이썬3 17장 파이썬과 인터넷
파이썬3 17장 파이썬과 인터넷
 
Python3 10장 문자열이야기
Python3 10장 문자열이야기Python3 10장 문자열이야기
Python3 10장 문자열이야기
 
Python3 11장 날짜이야기
Python3 11장 날짜이야기Python3 11장 날짜이야기
Python3 11장 날짜이야기
 
Iphone Core location
Iphone Core locationIphone Core location
Iphone Core location
 
코어 로케이션
코어 로케이션코어 로케이션
코어 로케이션
 
Python3 6장 모듈만들기
Python3 6장 모듈만들기Python3 6장 모듈만들기
Python3 6장 모듈만들기
 
Beginning iphone 4_devlopement_chpter7_tab_b
Beginning iphone 4_devlopement_chpter7_tab_bBeginning iphone 4_devlopement_chpter7_tab_b
Beginning iphone 4_devlopement_chpter7_tab_b
 

10장 아이패드에 대한 고려사항

  • 1. 아이패드에 대한 고려사항 발표자 : 공지훈 sagehoon@gmail.com
  • 2. 해볼것!! 기본적으로 제공하는 아이패드 뷰의 구조 전세계 가카들을 위한 앱 기존구조에서 기능추가 새로운 버튼추가해서 기능추가
  • 3. 아이패드는 화면이 크다. 아이폰과는 다르다. 보기좋게 넓게 쓰자.
  • 4. 그래서 보통 이렇게 쓴다. - 분활뷰
  • 7.
  • 8. 대략 줄거리 프로젝트 생성후 Group & files를 보면 RootViewController는 내비게이션 구조의 최상 위 레벨 정의 DetailViewController는 내비게이션 항목을 선택 할때 오른쪽 영역에 크게 보여줄 내용을 정의 기기가 회전할경우 분활뷰와 팝오버뷰 형태로 변경된다.
  • 9. 빌드 후 돌려보자. 빌드하면 아이패드 앱이 뜬다.
  • 11. DetailView.xib MainWindow.xib가 로드되고 상세뷰 컨트롤러가 생성될때 이 컨트롤러가 같은 nib에서 GUI를 찾지 않고 이 필드에 지정된 nib파일을 로드한다는 뜻 이렇게 하면 어떤뷰가 메인뷰에 속하고 어떤뷰를 별도 nib파일로 관리할지 지 정할수 있다. DetailView.xib는 MainWindow.xib안에 속한다고 봐도 된다. 이렇게 하는 이유는 코드와 관련없는 설정정보가 코드사이에 끼는것을 막을수 가 있다. 코딩과 화면을 분리할수가 있다.
  • 12. PresidentAppDelegate.h Window - 전체 UISplitViewController - 앱의 최상위 껍데기 rootViewController - 네비게이션 뷰 아래 있는 디테일 (왼쪽 디테일) detailViewController - 디테일뷰(오른쪽 디테일)
  • 16. RootViewController.m의 주요 부분 contentSizeForViewInPopover - 뷰컨트롤러가 팝오버 컨트롤러에 대한 디스플레이를 제공할때 사용할 크기를 설정한다. 이 사각형은 가로 너비가 최소 320 픽셀이어야 하지만 이와 별개로 크기는 얼 마든지 원하는 대로 설정할수 있다. shouldAutorotateToInterfaceOrientation - 디스플레이가 옆으로 뒤집을때 방향 바꾸게 할거냐 말거냐 이 처리 방향 바꾸기 싫음 YES tableView:didSelectRowAtIndexPath - 앞에서 사용자의 행선택에 반응하는 테이블 뷰 컨트롤러 구현시 이메서드에 서 새로운 컨트롤러 생성하고 이를 내비게이션 컨트롤러의 스택에 쌓았다. 하지만 이 애플리케이션에서는 보여주려는 컨트롤러가 이미 화면에 배치된 상 태. 이컨트롤러는 바로 xib파일에 들어 있는 DetailViewController다. 따라서 여기서는 DetailViewController 인스턴스에게 보여줄 디스플레이만 알 려주면 된다.
  • 17. DetailViewController.h DetailViewController는 앞에서 (RootViewController클래스 내에서) 본 detailItem 속성이외에 nib파일에 있는 GUI컴포넌트를 연결하기 위한 두개의 아웃렛(toolbar 및 detailDescriptionLable)과 더불어 잠시후 볼 팝오버 컨트롤러에 대한 인스 턴스 변수도 갖고 있다.
  • 19. 내부 클래스 클래스 내에서만 사용하고 헤더 파일을 통해 다른 클래스에게 노출되지 않는 속성과 메서드를 정의할수 있다. 여기서는 1. 앞에서 선언한 인스턴스 변수를 활용하는 popoverController속성을 선언 2. 디스플레이를 업데이트 할때마다 호출할 유틸리티 메서드를 선언 popoverController의 속성의 용도는 뒤에 가서....
  • 20. setDetailItem 메서드 앞에 세터 프로퍼티와 신디사이즈를 만들었는데 왜 또 세터 메서드를 만들까? 여기서는 사용자가 세터메서드 호출시 임의의 동작을 해야하기 때문에 따로 정의한것이다. 내용 - popoverController가 (nil이 아닌경우 즉) 있는경우 이를 사라지게하는 내용.
  • 21. popoverController는 어디서? 아이패드가 세로모드로 회전할때 호출되는 메서드 - UIPopoverController : 분할뷰의 왼쪽에 있는 뷰를 포함하도록 미리 설정된 컨 트롤러 - UIBarButtonItem : 이 팝오어뷰를 보여주도록 설정된 버튼이다. GUI에서 UIToolBar가 포함된경우- 버튼항목을 툴바에 포함시키기만 하면 사용 자가 위의 버튼을 눌러서 네이게이션 뷰를 호출할수있다는것. GUI에서 UITooBar가 없는 경우- 팝오버 컨트롤러는 여전히 인자로 넘어오므로 이를 GUI요소에 대입하면 해당요소를 통해 팝오버뷰를 보여줄수있다.
  • 22. popoverController를 회수 사용자가 다시 가로모드로 전환시 호출 이 시점에서는 분활뷰 컨트롤러는 뷰의 왼쪽영역을 다시 그려야 하므로 앞에서 가져온 UIBarButtonItem을 제거한다.
  • 23. PresidentList 시나리오 1. PresidentList.plist 파일을 Suppoting Files폴더에 옮긴다. 2. RootViewController.h에 NSArray presidents객체 및 property를 생성한다. 3. RootViewControlle.m에 synthesize로 presidents객체를 받는다. 4. viewDidLoad메서드에 앞서 추가한 plist에서 대통령정보를 옮겨서 NSArray presidents에 옮겨 담 는다. delegate메서드부분 5 행개수를 지정하는 numberOfRowsInSection 에서 presidents변수안의 데이터 갯수만큼 지정하 도록 변경. 6. 각셀에서 대통령 이름을 볼수있게 cellForRowAtIndexPath에 NSDictionary *president = [self. presidents objectAtIndex:indexPath.row]; 추가 - cellForRowAtIndexPath : 테이블에 데이터를 추가하기위한 UItableViewCell을 만드는 메서드 7.didSelectRowAtIndexPath 상세뷰 컨트롤러 에 URL을 넘겨준다.
  • 24. DetailView 시나리오 상세뷰에서 url대신에 좀더 유용한정보를 보여주고 싶다. 1. UIWebView webView,property를 h 에서 선언하고 m에서 sythesize로 받는 다. 2. detailView.m의 configureView메서드로 이동해서 url를 webView객체에 넣고 로드 시킨다. 3. barButtonItem.title을 바꾼다. 버튼 이름바꾸는것이다. 4. viewDidUnload dealoc에서 webView객체를 릴리즈시킨다.
  • 25. 언어변경 버튼추가 내용 :툴바 우측의 버튼이 생성되고 버튼을누르면 언어별 목록이 담긴 테이블 뷰가 뜬다. 해당 테이블뷰의 언어 선택시 디테일뷰의 내용이 그 해당언어로 새로고침 된 다. 현재는 UIPopoverController만 있는 상황 새로운 내용을 추가하기 때문에 새로운 UIViewController를 생성하고 거기서 작업을 해야한다.
  • 27. viewDidLoad 팝오버시 보이는 테이블의 크기와 이름,코드를 정의
  • 28. 테이블뷰 기본 델리게이트 메서드 1.section 1개 셋팅 2.row viewDidLoad 에 셋팅한 코드수만큼 셋팅 3.cell에 넣을 언어명 추가
  • 29. 선택한 언어 넘겨주기 선택시 DetailViewController에 선택된 언어를 넘겨준다.
  • 31. nib에서 button outlet등록 1. object library에서 FlexibleSpaceBarButtonItem을 선택해서 드래그앤 드랍을 한다. 2. 크기를 맞추고, 버튼이름을 Choose Language로 변경. 3. file's owner 선택하고 ctrl 드래그해서 touchLanguageButton메서드를 선택. 4. file's owner 선택하고 ctrl 드래그해서 버튼을 선택.
  • 32. DetailViewController.m 1. import "LanguageListController.h"를 한다. 2. 앞서 정의한 프로퍼티와 메서드를 신디사이즈로 받고 메서드는 구현한다. 3. 앞서 Language컨트롤러에서 받은 언어 텍스트와 위키피디아 url을 합체시킬 내부 함수 modifyUrlForLanguage 를 구현단다. 4. setDetailItem에 modifyUrlForLanguage를 넣어서 url을 애초에 합체시키게 만든다. 그리고 기존의 버튼이 하나였다가 두개 가 되면서 팝오버가 하나가 되서 관련 테이블이 올라왔을때는 하나가 더올라올려고 하면 기존의 것을 사라지게하는 로직을 구현한다. 5.setLanguageString 최초에 설정된 언어선택을 위해서 만드는 메서드 4번에 추가한 메서드내용은 이미 로딩된 상태에서의 언어선택으로 인한 변동을 위해서 6. 버튼 메서드를 구현한다. 눌렀을경우 팝오버되면서 뷰가 뜨도록 하느 액션.
  • 33. Q&A