호출하여 ViewController를 신속하게 해제하려고합니다 dismissViewController
.IBAction
@IBAction func cancel(sender: AnyObject) {
self.dismissViewControllerAnimated(false, completion: nil)
println("cancel")
}
@IBAction func done(sender: AnyObject) {
self.dismissViewControllerAnimated(false, completion: nil)
println("done")
}
콘솔 출력에서 println 메시지를 볼 수 있지만 ViewController는 결코 닫히지 않습니다. 무엇이 문제 일 수 있습니까?
답변
당신이 이미지에서 푸시를 사용하여 ViewController를 제시 한 것처럼 보입니다.
는 dismissViewControllerAnimated
모달을 사용하여 발표 가까운 ViewControllers에 사용된다
스위프트 2
navigationController.popViewControllerAnimated(true)
스위프트 4
navigationController?.popViewController(animated: true)
dismiss(animated: true, completion: nil)
답변
귀하의 문제에 대한 해결책이 있습니다. 모달을 사용하여 뷰를 표시하는 경우이 코드를 사용하여 뷰 컨트롤러를 닫으십시오.
스위프트 3 :
self.dismiss(animated: true, completion: nil)
또는
“push”segue를 사용하여보기를 제시하면
self.navigationController?.popViewController(animated: true)
답변
이 작업을 수행하면 콘솔에 println 메시지가 표시되지 않을 수 있습니다.
@IBAction func cancel(sender: AnyObject) {
if(self.presentingViewController){
self.dismissViewControllerAnimated(false, completion: nil)
println("cancel")
}
}
@IBAction func done(sender: AnyObject) {
if(self.presentingViewController){
self.dismissViewControllerAnimated(false, completion: nil)
println("done")
}
}
답변
Swift 3.0 ~ 4.0에서는 이것을 함수에 입력하는 것만 큼 쉽습니다.
self.dismiss(animated: true, completion: nil)
또는 내비게이션 컨트롤러에있는 경우 “팝”할 수 있습니다.
self.navigationController?.popViewController(animated: true)
답변
- 해제하려는보기를 NavigationController에 포함
- “완료”를 식별자로 사용하여 BarButton 추가
- 완료 버튼이 선택된 상태에서 어시스턴트 편집기를 호출하십시오.
- 이 버튼에 대한 IBAction을 만듭니다.
-
이 줄을 괄호 안에 추가하십시오 :
self.dismissViewControllerAnimated(true, completion: nil)
답변
사용하다:
self.dismiss(animated: true, completion: nil)
대신에:
self.navigationController.dismissViewControllerAnimated(true, completion: nil)
답변
내비게이션 컨트롤러없이 컨트롤러를 제시하는 경우 제시된 컨트롤러의 메소드에서 다음 코드를 호출 할 수 있습니다.
self.presentingViewController?.dismiss(animated: true, completion: nil)
ViewController가 모달로 표시되면 선택적 presentingViewController가 nil이 아니고 코드가 실행됩니다.