iOS View Controller

UIViewController

샘플 Xcode 프로젝트 바로가기

segue

UIViewController의 Instance 만들기

let secondVC1 = SecondViewController()
// 스토리보드 파일을 통하여,
let storyboard = UIStoryboard(name: Storyboard Name, bundle: nil) 

// ViewController를 인스턴스화 해서, present 한다.
let vc:UIViewController = storyboard.instantiateViewController(withIdentifier: "Storyboard Identifier")

present(vc, animated: true, completion: nil)

👍🏻 NSCoder

init(coder aDecoder: NSCoder) {
        <#code#>
}

👍🏻 awakeFromNib

General ViewController

Navigation ViewController

Present Modally

present

present(UIViewController, animated: Bool, completion: (() -> Void)?)

dismiss

dismiss(animated: Bool, completion: (() -> Void)?

func close(_ sender: UIButton) {
    dismiss(animated: true, completion: nil)
}    

Segue

segue

should Perform Segue?

import UIKit
class SegueTestViewController: UIViewController {

    var isAbleToNext: Bool = true
    
    // UI스위치 액션에 대한 Bool 값 (On/Off)을 가지고 segue의 perform 여부를 결정한다.
    @IBAction func ableToNext(_ sender: UISwitch) {
        isAbleToNext = sender.isOn
    }
    
    // "shouldPerformSegue"
    override func shouldPerformSegue(withIdentifier identifier: String, sender: Any?) -> Bool {
        if identifier == "nextDestination" {
            return isAbleToNext
        }else {
            return false
        }
    }
}

prepare for Segue?

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "nextDestination" {
        let destionationVC = segue.destination as? DestinationViewController
        let nextStr = textField.text ?? "nothing to send"
        destionationVC?.takeMessage(nextStr) // String 전달
    }
}

Manual Segue (수동 segue)

Unwind Segue

@IBAction func dismissCompletion(_ sender: UIStoryboardSegue) {
	// tableView를 reload 한다던가 등등의 작업을 해줍니다.
	// 아무 작업을 해주지 않으면 원래 그상태로의 화면이 남아있습니다.
}