반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- JS
- 로보어드바이저
- 알고리즘
- Ai
- 자료구조
- algorithms
- SSAFY
- frontend
- 모던자바스크립트
- Python
- 스택
- MacOS
- 백준
- algoritms
- Swift
- Algorithm
- 자문형
- 큐
- JavaScript
- BFS
- 일임형
- programmers
- BAEKJOON
- 신한투자증권
- React #Web #프런트엔드
- IOS
- 파이썬
- 자바스크립트
- 혁신금융서비스
- dfs
Archives
- Today
- Total
Step by Step
Delegate 패턴 본문
반응형
패턴(Pattern)이란?
- 패턴이란 반복해서 나타나는 사건이나 형태를 의미한다. 보통 예측 가능한 방식으로 되풀이된다는 점에서 의미가 있다.
- 객체지향 프로그래밍에서는 디자인 패턴(Design Pattern)이라는 합성 용어로 사용된다.
- 객체지향 프로그래밍에서 객체 간의 관계를 구조화한 사례가 일반화된 것이 바로 디자인 패턴이다.
GoF(Gang of Four)라고 불리는 네 명의 컴퓨터 공학자들에 의해 정의된 패턴들이 있다.
- 팩토리 패턴(Factory Pattern)
- 옵저버 패턴(Observer Pattern)
- 싱글톤 패턴(Singleton Pattern)
- 이터레이터 패턴(Iterator Pattern)
- 델리게이트 패턴(Delegate Pattern)
델리게이트 패턴
- iOS앱의 대부분 객체는 델리게이트 패턴(Delegate Pattern)이라는 일종의 위임 패턴을 사용한다. 이 패턴은 iOS앱 코드의 전반적 구조를 이루는 아주 중요한 패턴이다.
- 기존에 다른 진영의 개발을 많이 했던 개발자 입장에서도 생소한 패턴이므로 연습이 많이 필요하다.
항목 선택 구현– UIPickerView
- UIPickerView컨트롤을 사용하는 경우 UIPickerViewDataSource, UIPickerViewDelegate프로토콜을 구현
- picker라는 이름으로 아웃렛을 추가
- 배열을 하나 추가하고, 현재 뷰컨트롤러가 위임받았음을 명시한다. delegate속성과 dataSource속성을 둘 다 명시한다.
-
UIPickerViewDataSource, UIPickerViewDelegate프로토콜을 채택하고 필수 메서드를 구현하지 않으면 에러가 발생한다.
//
// ViewController.swift
// DemoPickerView
//
//
import UIKit
class ViewController: UIViewController,
UIPickerViewDelegate,
UIPickerViewDataSource {
//배열 준비
var device = ["아이폰", "아이패드","윈도우폰","안드로이드"]
@IBOutlet var picker: UIPickerView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
//누가 위임받았는지 지정
picker.delegate = self
picker.dataSource = self
}
func numberOfComponents(in pickerView: UIPickerView) -> Int {
//컬럼의 숫자
return 1
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return device.count
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return device[row]
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
print(device[row])
}
}
메세지 알림창 구현 – UIAlertView
- UIAlertView는 iOS앱에서 각종 메세지를 출력하는 용도로 사용하는 뷰이다. iOS 9.*부터는 UIAlertController를 사용해야 한다.
- 단순한 텍스트 메세지를 전달하고자 사용하기도 하지만 보통은 예, 아니오 또는 그 이상의 항목을 선택할 수 있는 버튼을 제공해서 사용자의 의도를 입력받기도 한다.
//
// ViewController.swift
// DemoPickerView
//
//
import UIKit
class ViewController: UIViewController,
UIPickerViewDelegate,
UIPickerViewDataSource {
//배열 준비
var device = ["아이폰", "아이패드","윈도우폰","안드로이드"]
@IBOutlet var picker: UIPickerView!
@IBAction func didAlertOne(_ sender: Any) {
let alert = UIAlertController(title: "알림", message: "UIAlertController 데모", preferredStyle: UIAlertController.Style.alert)
//버튼 생성
let cancelAction = UIAlertAction(title: "취소", style:UIAlertAction.Style.cancel,
handler: {(_) in print("취소 버튼 클릭")})
alert.addAction(cancelAction)
//화면에 출력
self.present(alert,animated:true)
}
@IBAction func didAlertTwo(_ sender: Any) {
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
//누가 위임받았는지 지정
picker.delegate = self
picker.dataSource = self
}
func numberOfComponents(in pickerView: UIPickerView) -> Int {
//컬럼의 숫자
return 1
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return device.count
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return device[row]
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
print(device[row])
}
}
반응형
'ios 앱 개발' 카테고리의 다른 글
Objective-C 기본 개념 (3) | 2025.04.21 |
---|---|
ViewController 간 Data 교환 (0) | 2025.03.26 |
Swift(Segueway 화면전환) (2) | 2025.03.26 |
Swift 기본문법(3) (1) | 2025.03.25 |
Swift 기본문법(2) 옵셔널 바인딩, 초기화 (0) | 2025.03.25 |