2011-11-10 7 views
3

내가 실수가 아니라면 모달보기는 모달보기에서가 아니라 상위보기에서 해제해야합니다.모달보기 해제

현재 프로젝트에는 두 가지 모달 뷰가 있습니다. 첫 번째에서는 부모보기로 데이터를 전달합니다. 데이터가 상위 뷰로 전달되면 닫기가 실행됩니다.

는 지금, 나는 부모 뷰에 데이터를 전달하지 않는 다른 모달 뷰를 가지고, 그래서보다

다른 하나 자기 dismissModalView하는 다른 어떤 제안을하는 것보다 다른 해고하는 방법을 모른다 이 주제에 대한 우수 사례?

미리 감사드립니다.

UPDATE : 미안 점점 답변에서

, 나는 haven't 자신 (BTW, 이상하지) 매우 명확하게 참조하십시오.

modalViewController를 자체 해제하는 방법을 알고 있습니다. 그건 아무 문제 없어. 일부 데이터가 전달 될 때 protocol-delegate 메서드를 사용하여 부모 뷰에서 modalViewController를 해제하는 방법도 알고 있습니다.

제 질문은 : 데이터가 전달되지 않을 때 부모보기에서 modalViewController를 해제하는 방법입니다.

다시 한번 감사드립니다! 당신은 당신이 그것을 호출하는 대리자를 사용할 수 있습니다 self에서 호출하지 않으려면

답변

12

당신은 modalView에서 호출 할 수 있습니다 : 당신은 당신에게보기를 닫

[self dismissModalViewControllerAnimated:YES]; 

하지만를 ... 당신이 모달 뷰가 무엇인가 "를 반환"여부를 어떤 일정한 코딩 패턴을 가지고 싶다면, 내가 제안 부모 (전화 한 사람, 해고하는 사람)로부터. 그러나 둘 다 할 수 있습니다.

질문에 대한 답변이 있습니까?

+0

그래서 아무것도 전달하는 방법도 작동합니까? – Marcal

+0

@Marcal : 어, 전달 된 데이터와보기를 닫지는 관계가 없습니다 ... 귀하의 목적을 이해하지 못합니다. – Oliver

+0

글쎄, 전에 프로토콜 위임 메서드를 부모보기로 데이터를 전달하는 데 사용됩니다. 상위 뷰에 데이터가 있으면 모달 뷰가 닫 힙니다. 기본적으로 내 질문은 여부를 데이터를 전달하지 않아도이 메서드를 사용할 수 있습니다. – Marcal

5

당신은

[self dismissModalViewControllerAnimated:YES]; 
0

를 사용하여 (즉,하지 않는 부모로부터) 직접 모달 뷰를 취소 할 수 있습니다.

따라서 viewControllerFinished 또는보기 컨트롤러가 대리자를 호출 할 방법이 있습니다.

그런 식으로 모달보기 컨트롤러를 시작하면 무엇이든지 해제됩니다. 이는보기 컨트롤러에서 정보를 다시 가져와야하는 경우 유용합니다.

4

는 iOS6 이상

사용 [자기 dismissViewControllerAnimated : YES 완료 : 닐];

6

걸릴

[self dismissModalViewControllerAnimated:YES]; 

이 이후 아이폰 OS 6에서 사용되지 않습니다 점에 유의 마십시오. 오히려 사용하십시오

[self dismissViewControllerAnimated:YES completion:nil]; 
0

스위프트 버전 ...

self.dismissViewControllerAnimated(true, completion:nil)