본문 바로가기
Study/Apple Swift

[SWIFT] 화면전환 (데이터 전달)

by Answer Choi 2016. 1. 19.
반응형

예제코드


이번에는 화면을 전환하는 예제입니다.


안드로이드에서는 Activity라는 개념이 있는데, swift에서는 ViewController라는 개념이 존재합니다.


그리고 intent를 통해서 데이터를 전달하곤 했는데, 여기서는 segue라는 것이 존재합니다.


처음엔 잘 이해가 안가지만 몇번 하다보면 금방 알 수 있습니다.


먼저 스토리보드를 보겠습니다.


먼가가 좀 복잡해 보입니다만 그림을 보시면 쉽게 이해가 됩니다.


왼쪽의 화면이 기본 화면입니다.


그리고 오른쪽이 새로 추가한 화면(View Controller)입니다.


왼쪽 View의 Next 버튼을 클릭하면 오른쪽 View로 전환되면서 타이머가 표시 되도록 해보겠습니다.


먼저 이전 예제에서 View를 하나 추가 합니다.


View Controller는 오른쪽아래의 window에서 쉽게 추가할 수 있습니다.



그리고 왼쪽의 프로젝트 파일리스트에서 swift 파일을 하나 추가합니다.




저는 MainView라는 이름의 swift파일을 만들었습니다.


1
2
3
4
5
6
7
8
9
import Foundation
import UIKit
 
class MainView : UIViewController{
       
    override func viewDidLoad() {
         super.viewDidLoad()
    }
}
cs


그리고 파일을 클릭하여 위 코드를 작성해 줍니다. 


Line 1 : 기본적으로 작성되어 있습니다.


Line 2 : UI와 연결하기 위해 필요한 듯 합니다.


Line 4~9 : 가장 기본적인 UIViewController를 위한 클래스 입니다.


여기서 적은 클래스명(MainView)은 수정가능하며 ViewController와 연결하기 위해 필요합니다.


이제 새롭게 만들어진 View Controller를 MainView라는 swift 코드파일과 연결을 해줘야 합니다.



View Controller의 노란색 단추를 누르면 오른쪽에 관련 정보와 설정할 수 있는 것들이 나옵니다.


여기서 class명을 아까 만든 swift 파일의 클래스와 맞춰주면 됩니다.


화면 전환을 위해서는 Segue라는 것이 필요합니다.


전환 될 View(Destination View)의 위의 노란 버튼을 눌러 Triggered Segues를 


전환 하고자 하는 View(Start View)로 연결합니다.


segue 종류는 Present Modally로 하였습니다.



그러면 View들 간에 화살표와 segue의 종류를 뜻하는 아이콘이 나타납니다.


segue종류에 따라 위 그림의 아이콘이 바뀝니다.


이제 아이콘을 눌러 segue의 이름을 넣어줍니다.



이제 거의 다 되었네용


첫 View에서 Next 버튼을 만들어 줬는데, 이 버튼을 누르면 다음 View로 이동합니다.


1
2
3
4
5
6
7
8
9
    @IBAction func nextpage(sender: AnyObject) {
        self.performSegueWithIdentifier("segNext", sender: self)
        
    }
    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        let sendtimer=segue.destinationViewController as! MainView
        sendtimer.time=String(time)
        
    }
cs


코드는 위와 같습니다.


Line 1~4 : 버튼눌렀을때 View가 전환되는 코드입니다.


Line 2 : 첫번째 파라메터에 segue의 이름을 넣어주면 그 segue대로 전환됩니다.


Line 5~9 : 여긴 View간의 데이터를 전달 할때 쓰는 코드인데 segue가 실행되기 전에 실행됩니다.


Line 6 : 목적지 View를 변수로 정의합니다.


Line 7 : View안의 변수에 전달하고자 하는 데이터를 저장합니다.


두번째 View입니다.


데이터의 전달이 없다면 따로 코드가 필요없지만, 데이터의 전달이 있다면 받아야 합니다.


1
2
3
4
5
6
7
8
9
10
    var time=""
    @IBOutlet weak var timerText: UILabel!
    override func viewDidLoad() {
         super.viewDidLoad()
        timerText.text=time
    }
    
    @IBAction func preButton(sender: AnyObject) {
        self.performSegueWithIdentifier("segPre", sender: self)
    }
cs


Line 1 : 전달받은 데이터를 저장할 변수입니다.


Line 2 : 전달받은 데이터를 화면에 표시할 Text Label 입니다.


Line 3~6 : View가 로드된 후 가장먼저 실행되는데, 여기서 변수를 전달받아 화면에 표시해 줍니다.


Line 8~10 : 이건 첫번째 뷰로 다시 돌아가기 위한 버튼에 대한 segue 설정입니다.



실행화면입니다.

Start를 누르면 카운터가 시작됩니다.

Next버튼을 누르면 화면이 전환되면서 이전 카운트가 표시됩니다.



반응형

'Study > Apple Swift' 카테고리의 다른 글

[SWIFT] Floating 연산 오류(?)  (0) 2016.01.22
[SWIFT] 네트워크 연결되어 있는지 확인하기  (0) 2016.01.21
[ SWIFT ] 타이머 만들기  (0) 2016.01.18
swift 간단한 Text 입력하기  (0) 2016.01.14
Swift 개발문서  (0) 2015.11.05

인기글