Delegation, didSet, Single-path UI

3724 단어 swiftswift

User Interaction (사용자 인터렉션)

  • 사람이 어플을 이용하며 서로 상호작용을 하는 것
  • iOS에서는 크게 3가지 방법으로 나뉜다.
    1. IBAction
    2. Callback Function
    3. Delegation

Delegation

키보드로 문자가 입력되는 경우를 통해 delegation이 무엇인지 살펴보자.

  • IBAction과 같이 텍스트 필드 자체를 메서드에 연결하는 것이 아니라, View Controller 전체에 연결한다.
  • 이 때, View Controller는 텍스트 필드의 위임자 역할을 한다. (Delegate)
// UITextFieldDelegate를 UIViewController 클래스에 연결한다.

class ViewController: UIViewController, UITextFieldDelegate {
	...
}
  • Storyboard에서 View Controllerdelegate와 연결해준다.

  • 텍스트 필드의 위임자로서 View Controller에서 다양한 callback 함수를 사용할 수 있다.
// 다양한 callback 함수들 중 하나이다.
// 사용자가 엔터를 눌렀을 경우 함수가 실행됨.

func textFieldShouldReturn(_ textField: UITextField) -> Bool {

	// 사용자가 엔터를 눌렀을 때 실행되는 로직 작성
	...

	return true
}

Property observer

  • 해당 프로퍼티가 바뀔 때마다 실행되는 코드

didSet

  • mode라는 프로퍼티가 있다고 가정해보자.
var mode: Mode = .flashCard
  • property observer인 didSet 블럭을 추가한다.
  • mode 프로퍼티의 값이 변경될 때 마다, didSet 내부에 있는 updateUI() 메서드가 실행된다.
var mode: Mode = .flashCard {
	didSet {
    	updateUI()
    }
}

Single-path UI

  • UI가 변경되는 코드를 한 곳(ex. 하나의 메서드)에 모아놓는다.
  • UI 관련 버그가 방지되고, 코드를 이해하기 쉬워진다.

좋은 웹페이지 즐겨찾기