본문 바로가기

개발 코딩 정보 공유/애플 iOS 스위프트 Xcode

IOS 스토리보드로 ViewController를 이용한 화면 이동 하기

 

 

 

 

 

 

 

 

안녕하세요.

김과자 입니다.

전편에 이어서 오늘은 스토리보드 id 를 사용하여 화면을 호출해 보겠습니다.

2021.11.09 - [HELLO_WORLD/애플_IOS] - IOS 다양한 화면 이동(컨트롤)방법 - Segue와 ViewController 사용

 

IOS 다양한 화면 이동(컨트롤)방법 - Segue와 ViewController 사용

안녕하세요. 김과자 입니다. 오늘은 IOS 개발중 조금은 난해한 화면 컨트롤 부분입니다. 우리가 만들게 될 어떠한 앱이든 간에  화면이동은 무조건 들어가게 되겠지요? 안타깝게도...? IOS에서 화

www.blueswt.com

 

 

캡쳐가 잘됐...

우선 버튼과 함수를 연결하겠습니다.

버튼에 대고 소스코드로 오른쪽버튼으로 쭈우욱~ 드래그 하고 만들면 됩니다.

 

 

 

자 이렇게 잘 연결되었죠. 내부 코드는 아래와 같이 작성합니다.

//2.스토리 보드 id를 통한 호출
@IBAction func onStoryBoardCall(_ sender: Any) {
	let storyBoard = self.storyboard!
	let secondController = storyBoard.instantiateViewController(withIdentifier: "storyBoard1") as! StoryBoardCallViewController
	secondController.delegate = self
	self.present(secondController, animated: true, completion: nil)

}
storyBoard.instantiateViewController(withIdentifier: "storyBoard1")

이부분을 보시면  'storyBoard1' 이라는 id 를 넣어줬는데요. 이건 어떤값이랑 맵핑 되는것일까요?

자 이렇게 ViewController 하나 만들어 주겠습니다.

 

 

그리고 나서는 클래스도 만들어서 연결해주겠습니다. 그리고 StoryBoard ID값도 지정해 줍니다.

 

아래의 클래스도 작성하여 줍니다.

class StoryBoardCallViewController: UIViewController {
    var delegate: UIViewController?
    var sendData: Int = 0
    
    override func viewWillAppear(_ animated: Bool) {
        print("========\(sendData)========")
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }
    
    override func viewWillDisappear(_ animated: Bool) {
        if let _ = delegate{
            (delegate as! ViewController).onReceiveMsg(msg: "받아라~")
        }
    }
}

 

자. 그럼 맨처음 소스코드를 다시 볼까요?

//2.스토리 보드 id를 통한 호출
@IBAction func onStoryBoardCall(_ sender: Any) {
	let storyBoard = self.storyboard!
	let secondController = storyBoard.instantiateViewController(withIdentifier: "storyBoard1") as! StoryBoardCallViewController
	secondController.delegate = self
	self.present(secondController, animated: true, completion: nil)

}

storyboard id 값을 주고 해당 ViewController를 가져온뒤 StoryBoardCallViewController로 캐스팅 합니다.

그리고 나서 값 전달을 위해 delegate를 설정합니다. 마지막으로 present하여 화면을 띄우게 됩니다.

그럼 값 전달은 어떻게 하냐구요?

 

secondController.sendData = 1

만들어 놓은 secondController의 변수에 필요한 값을 넣어주면 됩니다.

참 쉽죠?

 

콘솔에 값이 잘 찍히는걸 볼수 있습니다.

오늘은 이렇게 마무리 하겠습니다.

끝!