ios 앱 개발

Swift(Segueway 화면전환)

짤진이 2025. 3. 26. 14:10
반응형
세그웨이(Segueway)를 이용한 화면 전환
  • 세그웨이(Segueway)는 화면 전환과 뷰 컨트롤러의 연결을 관리하는 객체를 가리키는 단어이다.
  • 세그웨이는 화면과 화면의 연결을 위한 소스코드 없이도 스토리보드상에서 화면 전환 기능을 직접 구현할 수 있는 장점이 있다.
  • 세그웨이는 출발지와 목적지를 가지고 있으며 한쪽 방향으로 통행할 수 있어서 One-Way Bridge라고 할 수 있다.
액션 세그
  • 액션 세그는 트리거와 세그웨이가 직접 연결된 것을 의미한다. 주로 버튼이나 테이블 셀 등 터치 및 클릭 이벤트를 발생시킬 수 있는 컨트롤이나 제스처 등 세그웨이를 실행할 수 있는 요소를 말한다.
  • 액션 세그는 세그웨이의 실행을 소스 코드에서 메서드 호출에 의존하지 않고 스토리보드에서 이벤트가 발생하면 자동으로 세그웨이가 실행되도록 트리거를 구성하기 때문에 연결성 코드가 필요없다는 장점이 있다.
메뉴얼 세그
  • 메뉴얼 세그는 트리거 없이 수동으로 실행해야 하므로 소스코드에서 세그웨이를 실행할 메서드를 호출해야 한다.
  • performSegue(withIdentifier:세그웨이 식별자, sender:세그웨이 실행 객체)
  • 두 개의 인자값은 실행할 세그웨이에 대한 식별자와 세그웨이를 실행할 객체 정보이다.

ViewController에서 버튼을 클릭 후 컨트롤 누르고 SecondVIewController

주로 show present modaly 2가지만 사용

 

액션세그

Filled 버튼 생성 후 아래 코드를 작성하고 Ctrl 누르고 Second VIew로 이동, present Modal 선택하면 모달로 띄워진다

import UIKit

class ViewController: UIViewController {
    
    //되감기
    @IBAction func unwindToMainViewController(segue: UIStoryboardSegue){
        
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }
}

** Editor => Embed in => Naviagtion Bar 클릭

Navigation Bar에서 Bar Button 생성 후 ctrl 키로 Second View로 이동시킨 후 Show 클릭하면 두번째 페이지로 이동한다.

 

매뉴얼 세그

 

//
//  ThirdViewController.swift
//  DemoSegway
//
//  Created by 정찬진 on 3/26/25.
//

import UIKit

class ThirdViewController: UIViewController {

    @IBAction func moveViewController(_ sender: Any) {
        //매뉴얼세그는 아래 메서드를 호출
        performSegue(withIdentifier: "ManualWind", sender: self)
    }
    @IBAction func unwindToThirdViewController(segue:UIStoryboardSegue){
        
    }
    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
    }
    

    /*
    // MARK: - Navigation

    // In a storyboard-based application, you will often want to do a little preparation before navigation
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        // Get the new view controller using segue.destination.
        // Pass the selected object to the new view controller.
    }
    */

}

 

 

다중 화면 전달

첫번째 -> 두번째 -> 세번째 -> 네번째(두번째, 첫번째 이동)

Navigation Bar Play 버튼을 ctrl 드래그로 지정, Show 특성 선택하면 전체 화면으로 전환이 된다

네번째 화면에서 첫번째, 두번째 화면으로 이동할 때는 manual Seg를 사용할 것인데

 

 

//
//  ViewController.swift
//  DemoMultipleSegue
//
//

import UIKit

class ViewController: UIViewController {
    //되감기
    @IBAction func unwindToMain(segue: UIStoryboardSegue){
        
    }
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        //어떤 세그를 실행한거니?
        if (segue.identifier == "actionSegue"){
            print("첫번째 세그 실행")
        }   else{
            print("다른 세그 실행")
        }
            
    }
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }
}

 

//
//  SecondViewController.swift
//  DemoMultipleSegue
//
//  Created by 정찬진 on 3/26/25.
//

import UIKit

class SecondViewController: UIViewController {
    //되감기
    @IBAction func unwindToSecond(segue: UIStoryboardSegue){
        
    }
    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
    }
}

위처럼 코드를 작성하면 Manual Seg를 활용하여 넘어갈 수 있다.

Manual Seg를 사용할 때는 버튼을 ctrl 드래그로 네번째 페이지에 exit 버튼과 연결해서 Manual Seg를 해줘야한다

반응형