Notice
Recent Posts
Recent Comments
Link
투케이2K
155. (ios/swift) xib 파일 생성 및 커스텀 화면 제작, delegate 딜리게이트 이벤트 알림 전달 실시 본문
[개발 환경 설정]
개발 툴 : XCODE
개발 언어 : SWIFT
[방법 설명]
[UIView [xib] : 소스 코드]
import Foundation
import UIKit
// [protocol 정의 실시 : 클래스 외부에 선언]
protocol SendData {
// [인풋 파라미터 : 뷰 컨트롤러 , String 데이터]
func sendValue(_value : String)
}
// [클래스 정의 부분]
class UserInfoView: UIView {
// MARK: - [초기 전역 변수 선언 실시]
let ACTIVITY_NAME = "UserInfoView"
var delegate: SendData? // [딜리게이트 선언]
var count = 1 // [카운트 변수 선언]
// MARK: - [사용자 정의 초기화]
required init?(coder: NSCoder) {
super.init(coder: coder)
print("")
print("====================================")
print("[\(self.ACTIVITY_NAME) >> init [1] :: 사용자 정의 초기화]")
print("====================================")
print("")
// [뷰 초기화 수행 실시]
self.initialize()
}
// MARK: - [사용자 정의 초기화]
override init(frame:CGRect) {
super.init(frame: frame)
print("")
print("====================================")
print("[\(self.ACTIVITY_NAME) >> init [2] :: 사용자 정의 초기화]")
print("====================================")
print("")
// [뷰 초기화 수행 실시]
self.initialize()
}
// MARK: [초기화 함수 정의 실시]
private func initialize(){
print("")
print("====================================")
print("[\(self.ACTIVITY_NAME) >> initialize() :: 뷰 초기화 수행 실시]")
print("====================================")
print("")
// [스토리 보드 지정 및 뷰 추가 실시]
let bundle = Bundle.init(for: self.classForCoder)
if let view = bundle.loadNibNamed("UserInfo", owner: self, options: nil)?.first as? UIView {
view.frame = self.bounds
view.autoresizingMask = [.flexibleWidth, .flexibleHeight]
addSubview(view)
}
else {
return
}
}
// MARK: - [카운트 버튼 클릭 이벤트]
@IBAction func countButtonAction(_ sender: Any) {
// [딜리게이트 메시지 반환 실시]
self.delegate?.sendValue(_value: String(describing: self.count))
// [카운트 증가]
self.count = self.count + 1
}
} // [클래스 종료]
[뷰 컨트롤러 : 소스 코드]
import UIKit
import Foundation
// MARK: [xib 클래스에서 추가한 프로토클 상속]
class A_Main: UIViewController, SendData {
// MARK: - [클래스 설명]
/*
// -----------------------------------------
1. 메인 화면 액티비티
2. 사용하는 스토리보드 : Main
// -----------------------------------------
*/
// MARK: - [빠른 로직 찾기 : 주석 로직 찾기]
// -----------------------------------------
// [SEARCH FAST] : []
// -----------------------------------------
// MARK: - [전역 변수 선언 실시]
let ACTIVITY_NAME = "A_Main"
// MARK: - [뷰 로드 실시]
override func viewDidLoad() {
super.viewDidLoad()
print("")
print("====================================")
print("[\(self.ACTIVITY_NAME) >> viewDidLoad() :: 뷰 로드 실시]")
print("====================================")
print("")
}
// MARK: - [뷰 로드 완료]
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
print("")
print("====================================")
print("[\(self.ACTIVITY_NAME) >> viewWillAppear() :: 뷰 로드 완료]")
print("====================================")
print("")
}
// MARK: - [뷰 화면 표시]
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
print("")
print("====================================")
print("[\(self.ACTIVITY_NAME) >> viewDidAppear() :: 뷰 화면 표시]")
print("====================================")
print("")
// [뷰 추가 실시]
let userInfoView = UserInfoView(frame: CGRect(x: 105, y:200, width:200, height: 200))
self.view.addSubview(userInfoView)
userInfoView.delegate = self // [딜리게이트 지정]
}
// MARK: - [뷰 정지 상태]
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
print("")
print("====================================")
print("[\(self.ACTIVITY_NAME) >> viewWillDisappear() :: 뷰 정지 상태]")
print("====================================")
print("")
}
// MARK: - [뷰 종료 상태]
override func viewDidDisappear(_ animated: Bool) {
super.viewDidDisappear(animated)
print("")
print("====================================")
print("[\(self.ACTIVITY_NAME) >> viewDidDisappear() :: 뷰 종료 상태]")
print("====================================")
print("")
}
// MARK: - [딜리게이트 메소드 정의 실시]
func sendValue(_value : String) {
print("")
print("====================================")
print("[\(self.ACTIVITY_NAME) >> sendValue() :: 딜리게이트 메시지 전달 받음]")
print("value :: \(_value)")
print("====================================")
print("")
}
} // [클래스 종료]
[결과 출력]
반응형
'IOS' 카테고리의 다른 글
Comments