inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

iOS AutoLayout을 활용한 실전 UI구성 전략 - 카카오톡 같은 고급 UI 만들기

popup_2

modalPresentationStyle 질문

401

Dongjun Kim

작성한 질문수 4

0

이전에 modalPresentationStyle로 질문 남겼던 사람입니다.

”’translangVC.modalPresentationStyle = .overCurrentContext”’

투명처리는 잘 되었는데 이 코드를 사용하고 다시 그 전 VC로 넘어가면 viewWillApear가 정상적으로 호출되지 않는 문제가 있었는데요

답변으로 팝업에 delegate를 주시라고 했는데 구체적으로 어떻게 하는건지 감이 잘 안오는데 조금 더 자세하게 설명해주실 수 있을까요? 그리고 제가 지금 popupVC를 performSegue() 방식으로 호출하고 popupVC에서 버튼을 누르면 기존 VC에 있는 함수를 호출해서 VC의 변수 값을 조절하려고 하는데 말씀하신 팝업에 delegate를 걸어서 내려가면 호출하게하면 초기화가 되지 않나 궁금하네요!!

아직 배우고 있는 중이라 모르는게 많네요…

iOS-Autolayout

답변 2

0

Lee Won Joo

1. viewWillAppear가 호출되게 하는 방법

 vc. modalPresentationStyle = fullscreen 뭐시기를 추가해줍니다.

그러면 잘될걸요.

그리고 님이 말씀하신 변수를 조절하는 방법은, delegate를 이용해야해요

B에서 receiveData 라는 프로토콜을 정의하고,

A에서 (func)receiveData를 구현 및 위임받아 할 일을 정해놉니다.

액션은, A에서 B를 연다. 열 때 데이터도 같이 넘겨준다.

ex) vc.name = "test2"

self.navigationcontroller pushview...vc

B에서 값을 선택 한 후, 값을 던져준다.

delegate.receiveData("test")

팝업을 종료하면 A에서 (func)receiveData 가 호출되면서 넘겨준 데이터가 날아온다.

0

iOS Developer - 이정

안녕하세요.

요즘 개인적으로 요즘 좀 정신없어서 답변이 좀 늦었네요.

우선 인터넷에서는 swift delegate 이런 키워드로 검색하시면 예제는 많이 있는데 적당한 링크를 찾기가 어려워

간단히 코드를 구현했으니 참고 바랍니다.

코드는 2개의 클래스로 보시면 되고, 메인과 팝업 뷰컨트롤러 각각 어떻게 구현해야 하는지 보시면 됩니다.

// -- PopupViewController 파일에 구현할 내용

// 델리게이트 규격은 프로토콜 이라는 키워드를 이용해 만든다.

protocol PopupViewControllerDelegate {

func popupClosed()

}

class PopupViewController: UIViewController {

var delegate: PopupViewControllerDelegate?

override func viewDidLoad() {

super.viewDidLoad()

}

@IBAction func popupDismiss(){

self.dismiss(animated: true) {

// 델리게이트 함수 호출을 아래처럼 입력하면 현재 팝업화면이 내려가고 아래 델리게이트 함수가 실행됨.

self.delegate?.popupClosed()

}

}

}

// -- UIViewController 파일에 구현할 내용

// 아래 PopupViewControllerDelegate 표기는 해당 델리게이트 규격을 사용하겠다는 선언

class ViewController: UIViewController, PopupViewControllerDelegate {

override func viewDidLoad() {

super.viewDidLoad()

}

func popupClosed(){

// 이 함수는 팝업에서 규격이 만들어진 것으로 팝업에서 호출하면 여기서 위임받아서 호출하게 됨.

// 규격에 맞춰 잘 구현되어 있으면 팝업 내려가면서 현재 함수가 실행되어야 함.

}

func showPopup(){

let popupVC = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "PopupViewController") as! PopupViewController

popupVC.modalPresentationStyle = .overCurrentContext

popupVC.delegate = self // 현재(나자신) 뷰컨트롤러에 팝업의 델리게이트 위임 연결을 함.

self.present(popupVC, animated: false, completion: nil)

}

}

수강연장부탁드려도될까요..

0

42

2

Drawing Cycle 관련 질문

0

72

1

앱 제작 시 주로 코드로 작성하시는 이유가 있을까요?

0

95

2

델리게이트 패턴 관련 질문

0

66

2

수강 기간 연장 부탁드릴 수 있을까요?

0

61

1

활용 앱 57강 질문입니다.

0

55

1

활용 앱 30강 에러 질문입니다

0

64

2

기초앱 17강 Contraints 설정 질문입니다.

0

67

2

오토레이아웃 equal widths, equal heights

0

470

1

마우스 드래그 다중선택

0

957

1

테이블 뷰 응용 소스

0

254

0

선생님 제가 오랫동안 강의를 못듣다가 다시 들을건데 새버젼으로 들어야하나요?

0

194

0

강의 자료 링크가 열리지 않아요.

0

328

2

버튼에 이미지 추가?

0

250

1

안녕하세요.

0

251

1

objective c 는 방식이 달라서 따라하는데 시간좀 걸렸네요

0

228

1

viewController modalPresentationStyle 질문

0

237

1

stack view 사용시 view layer depth 에 대해 질문 있습니다.

0

365

1

이미지 활용한 애니메이션

0

283

1

다운

0

268

1

질문있습니다.

0

240

1

kakao-2-tableView_default 강의 진행중에 질문있습니다

0

297

5

popup.png 이미지가 뜨지않아요 ㅠ

0

309

1

설정 관련 질문입니다.

0

233

0