

popupDelegate를 정의해줄 파일을 하나 생성해준다 → 프로토콜이라는 리모컨을 만든 것
protocol PopUpDelegate {
func onOpenChatBtnClicked()
func countUp()
func sendUserInfo(info: String)
}
Main viewController에서 PopUpDelegate를 채택한다 → 대신 수행해주는 부분
ViewController는 PopUpDelegate이라는 것 자체를 변수에 올린다(메모리에 올린다)class ViewController: UIViewController, PopUpDelegate {
func onOpenChatBtnClicked() {
//오픈 카톡방 가기 버튼에 대한 이벤트를 여기서 처리를 하게 됨
}
}
CustomPopUpView에서 PopUpDeleate의 자료형을 설정해준고 MainViewController와 연결시켜준다
이벤트를 전달하는 쪽이 필요하다 → 즉, 조작하는 부분main viewController의 customPopUpVC.myPopViewController = self를 통해서 mainViewController의 PopUpDelegate를 가르키게 된다//안테나 발신
class CustomPopUpViewController: UIViewController {
var myPopUpDelegate : PopUpDelegate? //자료형이 팝업 델리케이트
}
//안테나 수신
class ViewController: UIViewController, PopUpDelegate {
customPopUpVC.myPopUpDelegate = self
}
CustomPopUpView에서 설정해준 PopUpDelegate를 발동시켜줘야 한다 → 즉, 함수를 실행시켜줘야 한다
@IBAction func onOpenChatBtnClicked(_ sender: UIButton!) {
print("custompopupViewcontroller - onOpenChatBtnClicked() called")
//리모컨을 누른 것 -> 즉, 이벤트가 발생했다고 viewController에 알린 것
//그럼 이 이벤트를 실행하겠다고(리모컨을 누른 것) 그걸 수신하는 것이 필요하다 -> 이걸 수신하는 것이 viewController가 되는 것
//그리고 viewController가 수신기가 되어서 onOpenChatBtnClicked함수의 내용이 실행되는 것
myPopUpDelegate?.onOpenChatBtnClicked()
self.dismiss(animated: true)
}
오픈 카톡방 가기를 누른다면 거기에 실행해야 할 함수를 정의
@IBAction func onOpenChatBtnClicked(_ sender: UIButton!) {
print("custompopupViewcontroller - onOpenChatBtnClicked() called")
let myChallerUrl = URL(string: "https://open.kakao.com/o/gTO6LbTe")
self.myWebView.load(URLRequest(url: myChallerUrl!))
}