2009-09-02 6 views
3

누구든지 하위 뷰 (하위)보기 컨트롤러에서 속성 값을 업데이트하는 방법을 알고 있습니까? 부모보기 컨트롤러에서 gettor/settor로 정의 된 statusid라는 int 속성이 있습니다. [self.view addSubview : detailsVC.view];하위 viewcontroller에서 상위 viewcontroller 클래스의 속성 값을 설정 하시겠습니까?

하위 하위 뷰에서 [super statusid : updatedValue]를 호출하려고했습니다. statusid를 새 값으로 업데이트하지만 오류가 발생합니다. 어떻게 부모에서 statusid를 업데이트 할 수 있습니까? 누구든지이 작업을 수행하는 방법을 알고 있습니까?

답변

0

super에 대한 메소드 호출은 메소드의 수퍼 클래스 구현을 호출하며 superview의/super view 컨트롤러 구현을 호출합니다.

자식보기 컨트롤러에서 부모에 대한 참조를 유지하고 부모에 setStatusId : 메서드를 호출하거나 자식 대리자 (부모에 설정된 것일 수 있음)를 전달할 대리자 패턴을 만듭니다. 상태 ID가 변경된 것을 확인하십시오. "슈퍼"와

+0

당신이에 코드 예제가 있습니까 도움 :로부터 부모에 대한 참조를 유지 자식보기 컨트롤러 및 부모 setStatusId : 메서드를 호출 할? 또한, 어느 쪽의 메소드가 부모의 delegate 패턴 또는 setStatusId 메소드를보다 세련되게 할까? –

6

당신이 당신의 기본 클래스를 액세스, 하나는 현재의 클래스는 설명했습니다 무엇을 할

에서 상속, 당신은 이후 다소 복잡 부모 뷰의 속성에 액세스 할 필요가 이것은 두 클래스가 서로를 참조하려고 할 때 거의 끝날 것입니다. 따라서 당신이 가장 가능성이처럼 다소 찾고, 위임 패턴을 만들어야합니다이

ParentView.h ChildView.h에의

@protocol IAmYourFatherAndMotherProtocol 

@class ChildView; 

@interface ParentView : UIViewController <IAmYourFatherAndMotherProtocol> 
{ 
NSInteger statusID; 
} 

@property (nonatomic) NSInteger statusID; 

@protocol IAmYourFatherAndMotherProtocol 
@property (nonatomic) NSInteger statusID; 
@end 

@end 

#import "ParentView.h" 

@interface ChildView : UIViewController 
{ 
    id<IAmYourFatherAndMotherProtocol> delegate; 
} 

@property (nonatomic, assign) id <IAmYourFatherAndMotherProtocol> delegate; 

ParentView.m에 ChildView를 만드는 위임자로 '자아'를 설정해야합니다 (예 :

ChildView *newChild = [[ChildView alloc] init]; 
newChild.delegate = self; 

그렇게함으로써, 당신은이 같은 ChildView.m에 ParentView의 "statusID"를 액세스 할 수 있습니다

delegate.statusID = 1337; 

희망이

+0

+1에 프로토콜 이름 – slf

+0

그냥 설명해주십시오. UIViewController 콜 아웃이있는 AnnotationView가 포함 된 MKAnnotation보기에서 속성을 변경하려고합니다. 콜 아웃의 viewcontroller에서 MKAnnotation의 속성 값을 변경하고 싶습니다. –

+0

그래서 MKAnnotationView에 (nother?) (MK?) AnnotationView가 포함되어 있습니까? 어쨌든, 나는 당신이 여전히 내가 게시 한 것과 비슷한 방식으로 그것을해야 할 것이라고 확신합니다. – gabtub

관련 문제