2012-12-14 3 views
0

마스터 뷰와 세부 뷰가있는 분할 뷰 컨트롤러로 작업하고 있습니다. 배열을 업데이트하기 위해 마스터보기 컨트롤러에서 메서드를 호출해야하는 사용자 입력 필드가 포함 된 내 세부보기 컨트롤러에 대한보기가 있습니다. 양측 간의 의사 소통을 설정하는 데 문제가 있습니다. 단순히 [masterViewController updateCalcs]를 사용하여 해당 메소드를 호출하려고 노력하지만 나던 아래로 오류를 해결하는 것 :세부 뷰에서 마스터 뷰 업데이트

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '- 
[UINavigationController updateCalcs]: unrecognized selector sent to instance 0xb08d130' 

사람은 방법을 정확하게 설명하는 몇 가지 예제 코드 또는 소스가 나를 도울 수 한 뷰에서 다른 뷰에서 메서드를 호출하는 방법?

+0

'updateCalcs'를 (를) 호출하는 것처럼 보입니다. NavigationController, masterViewController는'[self.navigationController.viewControllers objectAtIndex : 0] .visibleViewController'이어야한다고 생각합니다. – mkral

답변

0

대리인을 사용하는 것이 가장 좋습니다. 당신의 detailview.h에 추가 :

@protocol TestDelegate <NSObject> 
-(void)doSomeThing; 
@end 

@property (nonatomic, weak) id <TestDelegate> delegate; 

을 detailview.m에서 다음 detailview가 생성됩니다

masterview.m에서
[self.delegate doSomeThing]; 

후 추가 :

detailView.delegate = self; 

을 masterview.h에 추가 위임장 :

@interface MasterView : UIViewController <TestDelegate> { 
+0

알림 메시지를 사용할 생각이었습니다. 너는 그 일을 생각하는 가장 좋은 방법이 아니라고 생각하니? –

+0

나는 대리자가 더 나은 프로그래밍 연습이라고 생각한다. 자세한 정보는 http://stackoverflow.com/questions/2232694/delegates-vs-notifications-in-iphoneos를 참조하십시오. –

+0

MVC를 사용해야하며 모델에 저장된 배열을 가져야한다고 생각합니다. 상세보기 컨트롤러에서 모델을 업데이트 한 다음 해당 배열이 마스터보기에서 변경 될 때 알림 관찰자를 추가하십시오. – mkral

관련 문제