본문 바로가기

Programming/Xcode with Swift

Xcode with Swift - 텍스트 넘겨주기(Handing Over)


iOS 에서 버튼을 클릭했을 때, 텍스트에 있는 내용을 다음 창으로 전달하는 간단한 모듈을 만들어 보고자 한다.


새로운 프로젝트를 만들기 위해 아래와 같이 뉴 프로젝트를 생성한다.




iOS Application 에서 싱글 뷰를 선택하고 다음으로 넘어간다.


프로젝트명을 적당한 이름을 기입해 준다. 여기서는 텍스트를 넘겨준다는 의미로 'HandingOver'라고 명명하였다.


프로젝트를 생성해줄 폴더를 찾아 'Create'를 눌러준다.


이렇게 생성된 프로젝트는 아래와 같은 창을 보여준다.


애플리케이션에서 보여지는 부분을 다루는 메인스토리리 보드를 선택하면 아래와 같은 화면이 나타난다. 


우측 아래에 있는 Objects에서 버튼을 찾고, 메인스토리 보드에 드랙해서 적당한 위치에 자리 잡아준다.


입력할 텍스트 창도 찾아서 드래그하여 위치 시킨다.


일견 어떤 작동을 하게 하는지 알게하기 위해, 텍스트를 조금 바꾸어 주었다. 아래 버튼을 클릭하면, 위의 텍스트 창에 있는 값을 다음 창으로 넘겨주는 간단한 작동을 구현하겠다는 의미이다.


위의 버튼을 클릭하였을 때 보여줄 두 번째 창인 'ViewController'를 찾아 드래그로 위치시킨다.


좌측에서 전달받은 텍스트값을 보여줄 'Label' 객체를 찾아 적당한 위치에 자리 잡아준다.


'Label'의 이름을 살짝 바꾸어 주었다.


두 번째 창을 제어할 Controller 파일을 만들기 위해 아래와 같이 새로운 파일을 만들게 한다.


Swift 파일을 선택해 준다.


두 번째 화면을 컨트롤 할 것이므로, 이름을 SecondViewController 이라고 명명하였다.


위와 같이 파일을 생성하게 하면, 아래와 같은 새로운 파일이 생성되고 그 내용을 확인할 수 있다.


위의 'SecondViewController' 도 첫 번째 'ViewController'와 유사한 기능을 하기에 'VeiwController'의 값을 그대로 복사한 후 수정할 부분은 고쳐주면 된다.

'SecondViewController'을 아래와 같이 코딩을 한다. viewDidLoad() 부분은 클래스가 호출 되었을 때 보여지는 부분을 기입하는 곳이다.  


두 번째 viewController 인 'SecondViewController' 의 identifier를 설정하기 위해 메인보드 스토리에서 두 번째 중앙 윗부분에 있는 세 개의 객체중 가장 왼쪽을 클릭해 준다. 


그런 연후에 오른쪽 상단에 있는 클래스에 'SecondViewController' 이라고 기입을 해준다.


두 번째 컨트롤러의 상단부 이름이 바뀌어 있는 것을 확인 할 수 있다.


이제 기본적인 것들은 대략 정리가 된듯 하다. 지금 부터는 뷰에서 보이는 부분을 어떻게 작동하게 할지 코드로 컨트롤 할 일만 남았다. 아래는 버튼을 클릭하면 두 번째 창을 보여주게 하기 위해 좌측의 버튼을 'control' 키를 누른 상태에서 드래그를 하면 아래와 같이 푸른색 줄이 생성된다. 이 선을 오른쪽으로 이어주고 놓으면 된다.



이렇게 연결을 하면 아래와 같은 창이 나오는데, 여기서 'show'를 찾아 클릭 해 준다. 왼쪽 버튼을 누르면 오른쪽을 보여주겠다는 의미이다.


위와 같은 과정을 거치면 두 개의 창 사이에 새로운 선이 하나 생성된다.


이번에는 두 번째 창에서 레이블을 'control' 키를 누른 상태에서 'SecondViewController'로 연결한다.



그러면 아래와 같은 창이 나오는데, 이름을 'receivedTextLabel' 로 명명을 해 주었다.


그러면 아래와 같이 코드에 추가가 된다.


receivedText 라고 하는 변수를 정의하고, 문자형을 할당해 준다. 이는 차후 코드를 통해서 그 값을 전달받을 때 사용될 예정이다. 



두 번째 창이 호출되면 receivedText 의 값을 receivedTextLabel 의 text 부분에 넣어 주라는 의미의 코드가 실행되게 한다. 



이번에는 첫 번째 창에서 텍스트 창을 'ViewController'와 연결시켜 준다.



이렇게 연결한 텍스트 필드의 이름을 'sendingTextField' 라고 명명하였다.



첫 번째 창에서 두 번째 창으로 넘어갈 때 실행되는 'prepareForSegue' 부분을 아래와 같이 정의하여 주었다.


override func prepareForSegue(
segue: UIStoryboardSegue, sender: AnyObject?) {     
        let DestViewController
         : SecondViewController = 
         segue.destinationViewController as!
          SecondViewController
        
        DestViewController.receivedText = 
        sendingTextField.text!
    }



여기까지 코딩을 완려하고 실행을 하면 아래와 같은 시뮬레이터 창이 나타난다.

텍스트 필드에 적당한 값을 기입하고, 아래의 버튼 부분을 클릭해준다.

버튼을 클릭하면 화면이 두 번째 화면으로 전환이 되면서 아래와 같은 텍스트가 표기된다.

스크린샷으로 상기와 같은 과정을 하나씩 찍고 진행하려고 하니, 여간 까다로운게 아닌것 같다. 왜 모두들 동영상으로 촬영을 하고 유튜브에 연결을 하는제 새삼 이해가 간다. 추후에는 동영상으로 제작을 해야 하나...... 고심이 되지만, 말빨이 안 따라주어 어떻게 해야할지 막막한 심정이다 -_-;;