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를 해줘야한다
반응형