2010-08-17 2 views
0

나는 내가 사용자가 자신이 이전 페이지로 올 수있는 설정을 완료하면 모달보기다시로드 ParentViewController

[self presentmodalviewcontroller:tempcontroller animated:yes];

를 사용하여 설정 페이지를 표시하고있어 아이폰 응용 프로그램이 있습니다.

[self.dismissmodalviewcontroller animated:YES]; 

이제 사용자가 설정 페이지에서 돌아 왔을 때 기본 페이지를 다시로드하려고합니다. 나는 그 부분에 대해서는 @protocol and delegate을 사용해야한다. 나는이 주제에 대한 웹 튜토리얼을 보았다. 그러나 나는 그것을 할 수 없었습니다. 나는 아이폰 개발을 처음 접했기 때문에 @protocol and delegate에 대한 지식이 없습니다.

좋은 자습서로 도와주세요. 내 필요에 대한 단계별 설명이있는 링크를 제안 할 수 있다면 greate 될 것입니다. "호출 - 당신의 도움을 기대

.... 사전에

감사

기쁨

답변

2

또 다른 쉬운 옵션은 NSNotificationCenter을 사용하는 것입니다.상세한 답변이

sending data to previous view in iphone

+0

NSNotification 센터는 의미 론적으로 모달 뷰를 루트에서 분리합니다. '일대일 관계이고 다른 하나는 명확한 대리자이기 때문에 의미가 없습니다. – DexterW

0

기쁨,

의 당신이 다른 모달을 제시하는의 ViewController 있다고 가정 해 봅시다 뿌리".

모달은 "모달"이라고

"루트"

[self presentModalViewController:Modal]; 

가 어떻게 루트가 모달을 해제 할 때 알고 있지 말 것입니다? 이렇게하는 가장 좋은 방법은이 동작에 대한 "프로토콜"을 만드는 것입니다. 속성과

id<ModalViewDelegate> delegate; 

:

인스턴스 모달에 대한 변수가 있어야한다,

@protocol ModalViewDelegate <NSObject> 

-(void)modalViewControllerDidFinish:(UIViewController *)viewController; 

@end 

다음 : 모달의 헤더 파일에서

,이 같은 코드가있을 것입니다
@property (assign) id<ModalViewDelegate> delegate; 

이렇게하면 Modal이 'delegate'속성에 메시지를 보낼 때마다이 메서드를 사용할 수 있습니다. - (void) modalViewControllerDidFinish :

그럼 모달 안에 버튼을 닫고 싶다고합시다. 버튼은 단순히 루트에 대한 헤더 파일에서 [delegate modalViewControllerDidFinish:self];

를 호출 할 필요가있다, 당신은 선언과 같이 클래스 :

@class Root : UIViewController <ModalViewDelegate> 

그리고이 같은 방법 modalViewControllerDidFinish 구현 :

-(void)modalViewControllerDidFinish:(UIViewController *)controller { 
    // any action you need to take on controller 
    [self dismissModalViewControllerAnimated:YES]; 
} 

이됩니까을 이해가 되니?

+0

감사 Greelmo에서보세요. 구현 한 그 날 오류가 - [UIView modalViewControllerDidFinish :] : 인식 할 수없는 선택기 인스턴스 0xd38280 보냈습니다 그 이유를 알지 ?? – Joy

+0

당신은 말할 필요가있다. Modal.delegate = root; 루트에 해당 메소드를 구현했는지 확인하십시오. 약간의 독서를하십시오. 사과가 추천하는 해결책입니다. – DexterW