Objective-C 책을 보는데 있어서 크게 어려움은 없었다. 아직 개발자로 일하고 있으니까.

Objective-C 책을 보고 iOS 개발 책을 보는데 진도가 쉽게 나가지 않는다. 책은 Xcode 3.x를 기준으로 설명하고 간간히 Xcode 4.x에 변경된 첨을 추가해 놓은 방식이다. 아마도 Xcode 3.x 대상으로 책을 쓰다가 발매할 때쯤 Xcode 4.x가 나왔었나 보다. 더 문제는 지금 Xcode 5.x 가 나왔는데... 뭔가 책이 산만하다.


Xcode5 를 대상으로 진행 하였다.

cf) http://www.youtube.com/watch?v=0xo5ruScyCM

 


 

View Controller와 연결된 클래스 이름 확인


storyboard에서 view controller를 선택하면 2가지 변화가 보인다. 

1. 선택한 view controller 테두리에 파란색으로 하이라이트 된다.

2. 아래 검은색 박스에 view controller와 연결된 클래스 이름이 출력된다.



Single View Application 템플릿으로 프로젝트를 생성하였을 경우 기본적으로 만들어 주는 ViewController.h/ViewController.m 와 연결된 view controller이다. 


 

 

View Controller 연결

 

View의 버튼을 클릭할 경우 다른 뷰로 전환하도록 하는 방법이다.

 

 

키보드의 컨트롤 키를 누른 상태에서 마우스로 버튼(Go To The Second View) 누른 후 이동할 뷰로 드래그 한다.

 

 

 

마우스 드래그를 풀면 Action Segue가 나타난다. 3가지 중 하나를 선택할 수 있는데 modal을 선택하면 된다.

 

MFC의 다이얼로그 호출 함수, DoModal 이 생각이 났다. Modal 방식으로 호출한 윈도우 위에 호출된 윈도우가 출력된다.

호출한 뷰 위에 호출된 뷰가 동작한다고 생각하면 될 것 같다.

 

 

 

 

처음 뷰에서 다음 뷰로 연결됨을 나타내는 선(Segue)가 나타난다. 화살표 중간에 동그란 표시가 있는데 modal로 연결됨을 나타내는 것 같다. 다른 action을 취하면 다른 모양이 나타날텐데 그건 추 후 알아가도록 해야겠다.

 

Segue

화면이 다른 화면으로 변화되는 흐름?!을 Segue라고 하는 것 같다.

 

Scene

각각의 화면 즉, 하나의 view controller와 그 속에 포함된 view들을 말한다.

 

Dock

화면 아래 검정색 박스는 Dock 이라고 한다.

view controller와 view 들 사이에 action 이나 outlet 변수를 연결하는데 사용한다.

 

출처 : http://www.appcoda.com/use-storyboards-to-build-navigation-controller-and-table-view/

 

 

 

 

View Controller와 클래스 연결


Storyboard에 있는 view controller를 코드로 다룰려면 view controller를 클래스와 연결시켜줘야 한다.


MFC 에서도 Dialog 생성 후 코드로 다룰려면은 클래스와 연결시켜줘야 했다. 




프로젝트 네비게이터에서 프로젝트 이름을 선택한 후 마우스 오른쪽 버튼을 누른다. 메뉴에서 "New File..."를 선택한다.

 



iOS, Cocoa Touch를 선택한 후 Objective-C class를 선택한다.




Class 이름을 적어주고, Subclass of 항목 즉 부모 클래스는 UIViewController를 선택해야 한다.




프로젝트 네비게이터에 추가한 헤더 파일과 구현 파일이 보인다.




연결하려는 view controller를 선택해준다. view controller에서 배터리 이미지가 있는 상단 부분을 클릭하면 쉽게 view controller를 선택해 줄 수 있다. 오른쪽 Utility 메뉴에서 identity inspector 클릭한다. Custom Class 에서 연결하려는 클래스 이름 (View2)를 선택해 준다.




아래 검정색 박스에 연결된 클래스 이름이 출력된다.



Outlet 변수 및 이벤트 연결


Storyboard에서 Label, Button과 같은 UI 컨트롤을 추가했다면 코드에서 이 컨트롤들을 어떻게 다뤄야 할까? 일단 view controller를 클래스와 연결시켜준 후, 클래스 내의 변수를 UI 컨트롤과 연결시켜줘야 한다.


MFC 에서도 클래스 위저드를 이용해서 컨트롤과 변수를 연결해줬었다. 


view controller와 연결된 View2클래스 헤더파일에 다음과 같이 선언해 주었다.



IBOutlet UILabel *HelloWorldLabel;

IBOutlet : 해당 변수가 UI컨트롤과 연결될 변수임을 컴파일러에게 알려준다. 이렇게 선언해 줘야 storyboard에서 변수 연결시 사용할 수 있다.

UILabel *: 변수 타입

HelloWorldLabel : 변수 이름


-(IBAction)buttonClick:(id)sender;

버튼에 이벤트가 발생할 경우 그 이벤트를 처리하는 핸들러의 정의인듯 하다.

-(IBAction) : 인스턴스 메소드이며 리턴 타입은 IBAction

buttonClick : 이벤트 핸들러 이름

(id)sender : 파라미터로 변수 타입은 id형이며 이름은 sender


 

 

View2 view controller를 선택한 후 Connections Inspector를 연다. IBOutlet 변수로 선언한 HelloWorldLabel변수가 보인다. 오른쪽에 있는 원을 마우스로 클릭 후 드래그 해서 연결하고자 하는 Label에 연결해준다. 이렇게 하면 Label과 변수가 연결된다.

 

 

 

Connections Inspector 에서 Received Actions 항목을 보자. 이벤트를 받을 이벤트 핸들러들의 목록이 보인다. (이미지에는 Button이 보이지만 위에서 작성한 코드대로라면 buttonClick 이 보일 것이다.) 원을 클릭 후 이벤트를 발생시킬 버튼에 연결시켜 준다.

 

 

 

마우스를 놓으면 버튼의 어떤 이벤트를 받을건지 선택할 수 있는 메뉴가 나온다. Touch Up Inside 선택하여 해당 이벤트가 발생했을 때 이벤트 핸들러가 호출되도록 해주자.




View2.m 구현 파일에 buttonClick 이벤트 핸들러를 위와 같이 작성해 주었다.




예상대로 동작함을 확인.


 

 

@

Posted by six605
,