2017-02-18 2 views
2

은 나는 스토리 보드 SEGUE를 통해 프로그래밍 나타나는 차의 ViewController가 AppDelegate는 메뉴 항목 클릭에 의해 차례로 트리거됩니다.스위프트 dismissViewController 맥 OS

그러나, SEGUE 메인의 ViewController에 연결되어 있어도, 다음 코드는 보조보기 해고하지 않습니다

@IBAction func dismiss(_ sender: Any) 
{ 
    print("Hello? Gonna close?") 

    self.presenting?.dismissViewController(self) 
} 

에 오류가 없습니다를 함수는 버튼을 해제 올바른 에라고 클릭하지만 보조 뷰는 닫히지 않습니다. dismissViewController의 모든 변형을 사용해 보았습니다.

기본보기의 단추를 사용하여 동일한 구획을 활성화하면 모든 것이 정상적으로 작동합니다. 나는 단순히 버튼들을 묶어 메인 뷰를 어지럽히고 싶지는 않다.

의견을 보내 주셔서 감사합니다. 모달 발표되었다 뷰 컨트롤러에서만 작동 dismissViewController

+0

때이 줄을 'self.presenting? .dismissViewController (self)'가 실행되면'self.presenting'의 값은 무엇입니까? –

+0

@DaveWeston, 좋은 질문입니다. 'let x = self.presenting! as NSViewController', 앱이 ** 치명적인 오류로 인해 충돌합니다 : 옵션 값 **을 래핑하는 동안 예기치 않게 nil이 발견되었습니다. 외관상으로는 viewController 프리젠 테이션이 없다. –

답변

1

(사용 Present Modally Segue) 같이,이 같은 Show Segue 제시 뷰 컨트롤러를 기각한다 this SO question에 대한 대답했다 :

navigationController?.popViewController(animated: true) 
dismiss(animated: true, completion: nil) 
+0

dismissViewController는 시트로 표시된보기 컨트롤러에서 작동하며 표시됩니다. 이 프로젝트에는 navigationController가 없습니다. 어쨌든 귀하의 의견을 보내 주셔서 감사합니다. –