2012-01-28 2 views
-1

보기 기반 앱이 있습니다. 로드 첫 번째보기는이 코드를 사용하여 다른보기를로드하는 버튼이 있습니다Objective-C (iPhone)에서보기 언로드

AddPost *addView = [[AddPost alloc] initWithNibName:@"AddPost" bundle:nil]; 
addView.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; 
[self presentModalViewController:addView animated:YES]; 

내가하고 싶은 것은 내가 그것을 닫고 다시 이동하게됩니다 뷰 (AddPost)의 버튼을 제공하는 것입니다 원본보기. 어떻게해야합니까?

답변

1

그것은 조금 이상한 것 같다,하지만 당신은 실제로 addView 호출 할 수 있습니다 : 워드 프로세서

[self dismissModalViewControllerAnimated:YES]; 

을 :

"부모 뷰 컨트롤러는이를 사용하여 표시되는 모달 뷰 컨트롤러를 기각에 대한 책임 presentModalViewController : animated : method. 그러나 모달 뷰 컨트롤러 자체에서이 메서드를 호출하면 모달 뷰 컨트롤러가 자동으로 부모 뷰 컨트롤러로 메시지를 전달합니다. "

0

Conrad가 준 답변은 완벽하게 작동합니다. 약간 더 나은 캡슐화라는 이름으로 addView에 위임 프로토콜을 넣고 첫 번째보기에서이를 구현할 수 있습니다. 당신의 addView 컨트롤러의 헤더 파일에 따라서

:

@protocol addViewDelegate <NSObject> 
    - (void)addViewRequestDismissal; 
@end 

는 또한 제대로 addView 컨트롤러에 외부가 필요합니다

@property (assign) id<addViewDelegate> delegate; 

그런 다음 첫 번째보기 컨트롤러가이를 구현하기 때문에, in .h 파일이 있어야합니다.

@interface firstView : NSObject <addViewDelegate> { 
} 

당신의 버튼이 다시 전화를 누를 때 addView 컨트롤러에서

addView.delegate = self; 

: 당신의 addView 대리자를 설정하는 기억 테

첫 번째 뷰가이 방법

- (void)addViewRequestDismissal { 
    [self dismissModalViewControllerAnimated:YES]; 
} 
을 구현하기 위해 기억에 마지막으로
- (void)buttonPressed { 
    [self.delegate addViewRequestDismissal]; 
} 

희망 사항이 모두 잘 어울립니다. 더 이상 문제가 있으면 다시 게시하십시오 :)