-
Notifications
You must be signed in to change notification settings - Fork 6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Fix] #216 - 대기방에서 뷰 dismiss 분기처리 #217
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
감자후배를 위해서 이렇게 정리해주시고 진짜 무한한 감사.. 대우주꿀팁 잘받아갑니다
@@ -102,6 +123,8 @@ class WaitingVC: UIViewController { | |||
rightButtonImage: UIImage(), | |||
reftButtonSelector: #selector(dismissToHomeVC), | |||
rightButtonSelector: #selector(touchToMore)) | |||
case .none: | |||
print("fromeWhereStatus 를 지정해주세요.") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
와울... enum으로 정리해주니까 너무 깔끔해보여요!! 체고시다 선배..
switch self.fromWhereStatus { | ||
case .fromHome: | ||
self.popToHomeVC() | ||
case .makeRoom: | ||
self.dismissToHomeVC() | ||
case .joinCode: | ||
// 코드로 참여시에는 createButton 이 히든되어 있어서 아무런 동작이 필요하지 않다. | ||
return | ||
case .none: | ||
print("fromeWhereStatus 를 지정해주세요.") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
이유는 알수 없지만 개인적으로 if else보다는 switch case가 훨씬 가독성이 좋네요. case에서 정보를 유추할 수 있어서 그런감..
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
그런거 같아요! 기존에는 fromHome 이라는 bool 자료형으로 구분을 했는데 선택지가 3개를 고려해야했고 그러면서 자연스럽게 열거형을 사용하려했어요!
|
||
@objc | ||
func dismissJoinCodeToHomeVC() { | ||
presentingViewController?.presentingViewController?.presentingViewController?.dismiss(animated: true) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
아아앗 self.presentingViewController?.dismiss
와 self.dismiss
가 사용자가 보기에는 똑같이 보이고, completion의 작동에서만 차이가 있다.
따라서 전전의 뷰를 포함해서 dismiss하려면 presenting을 3번을 써줘야 하는거죠??
진짜 대우주꿀팁 킹갓현규섬배..
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
맞아여 등장한 뷰컨에서 dismiss 하면 UIKit 은 등장시킨 뷰컨에게 해제를 요청하고, 결국 등장시킨 뷰컨에서 dismiss 를 해도 같은 의미가 되니까 그렇게 됐던거 같아여!
dismiss 도 찾아볼 이유가 되네.. 하면서 조금 이마 탁치면서 공부했어여 저도
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
이전에 bool 변수 사용해서 했던 것보다 훨씬 깔끔하고 좋네요.. 역시 ........ 깔끔한 정리 감사합니다!🙆♀️⚡️
🌴 PR 요약
🌱 작업한 브랜치
🌱 작업한 내용
📌 참고 사항
화면을
dismiss
로 걷어내는 객체는 해당 뷰컨이 아니라구 해여! VC1이 VC2를 불렀다고 가정한다면, VC2가 화면에서 걷어지기 위해서는 VC1가 걷어줘야하는거죠!어라..? 그러면
self.dismiss
가 아니라self.presentingViewController.dismiss
를 써야하는거 아닌가요?에 대한 답변으로 사용자의 관점에서 전혀 차이를 느낄 수 없다고 해여
그래서 코드 입력하는 팝업창을 부르는
presentingViewController?. presentingViewController?. presentingViewController?
에서dismiss
를 해주어야했던 것이지요.개발자 문서를 찾아볼게여~
dismiss(animated:completion:)
Dismisses the view controller that was presented modally by the view controller.
Parameters
transition 에 애니메이션을 적용하려면 true 를 전달해야한다.
뷰 컨트롤러가 dismiss 된 후 실행할 블록이다.
Discussion
presenting view controller
는 자신이 present 한 뷰컨트롤러를 닫을 책임이 있습니다.presented view controller
자체에서 이 메서드를 호출하면 UIKit 는presenting view controller
에게 해제를 처리하도록 요청합니다.여러 뷰컨트롤러를 연속적으로 present 해서
presented view controller
스택을 구축하는 경우, 스택의 낮은 뷰컨트롤러에서 이 메서드를 호출하면 바로 자식 뷰컨트롤러와 위의 모든 뷰컨트롤러가 해제됩니다.이런일이 발생하면, 맨위의 뷰만 애니메이션 방식으로 닫힙니다. 중간 뷰컨트롤러는 스택에서 간단히 제거됩니다. 맨위의 뷰는 modal transition stlye 을 사용하여 dismiss 됩니다. 이 스타일은 스택의 다른 하위 뷰컨트롤러에서 사용하는 것과 다를 수 있다.
만약
presented view controller
에 대한 참조를 유지하려면 이 메서드를 호출하기 전에presentedViewController
속성의 값을 가져와야 합니다.completion
핸들러는presented view controller
에서viewDidDisappear(_:)
메서드 호출된 다음에 호출됩니다.📸 스크린샷
📮 관련 이