데이터를 전달할 때 보통은 segue를 사용하는데 viewcontroller간 segue로 연결되어 있지 않은 경우는 어떻게 해야 할까?
protocol SendDataDelegate {
func sendData(data : 데이터타입)
}
class SendViewController : UIViewController {
var delegate : SendDataDelegate?
}
class SendViewController : UIViewController {
var delegate : SendDataDelegate?
func sendfunction() {
delegate?.sendData(Data:보낼데이터)
}
}
class GetViewController : UIViewcontroller, SendDataDelegate {
func sendData(Data : ) {
///받은 데이터 Getviewcontroller상에 구현하는 코드
}
}
@IBAction func stickerBtnClicked(_ sender: UIBarButtonItem) {
// 바텀 시트로 쓰일 뷰컨트롤러 생성
let vc = storyboard?.instantiateViewController(withIdentifier: "PutStickerViewController") as! PutStickerViewController
vc.delegate = self
// MDC 바텀 시트로 설정
let bottomSheet: MDCBottomSheetController = MDCBottomSheetController(contentViewController: vc)
bottomSheet.mdc_bottomSheetPresentationController?.preferredSheetHeight = 300
// 보여주기
present(bottomSheet, animated: true, completion: nil)
}
저는 바텀시트를 사용할 때 이 데이터 전달 방식을 사용했기 때문에
위 코드와 같이 vc.delegate = self 작성하여 대리자 위임을 해주었습니다.
여기선 바텀시트가 SendViewController, PutStickerViewController가 GetViewController입니다.