2009-09-02 21 views
3

誰もサブビュー(子)ビューコントローラからプロパティ値を更新する方法を知っていますか? 親ビューコントローラでgettor/settorで定義されたstatusidというintプロパティがあります。 [self.view addサブビュー:detailsVC.view];親ViewControllerクラスのプロパティ値を子ViewControllerから設定していますか?

子サブビューでは、[super statusid:updatedValue]を呼び出しています。 statusidを新しい値に更新しますが、これによりエラーが発生します。親のstatusidをどのように更新できますか?誰でもこれを行う方法を知っていますか?

答えて

0

スーパーでメソッドを呼び出すと、メソッドのスーパークラスの実装が呼び出され、スーパービューの/ superビューコントローラの実装が呼び出されます。

子ビューコントローラからの親への参照を保持し、親のsetStatusId:メソッドを呼び出すか、子の委譲を許可する2つの間のデリゲートパターンを作成する必要があります(親に設定されている可能性があります)ステータスIDが変更されたことを確認します。以来、かなり複雑で

あなたは、基本クラス、現在のクラスを使用すると、説明してきた何をする

から継承したものにアクセスし、「スーパー」と

+0

を助け、あなたがするコード例を持っていますか:から親への参照を保持子ビューコントローラを呼び出し、親のsetStatusId:メソッドを呼び出しますか?また、どのメソッドが親クラスのデリゲートパターンやsetStatusIdメソッドをよりエレガントにしていますか? –

6

、あなたは親ビューのプロパティにアクセスする必要があり、これは、両方のクラスがお互いを参照しようとしている可能性が高いでしょう。 ので、あなたが最も可能性の高いややChildView.h

#import "ParentView.h" 

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

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

ParentView.mであなたのChildViewを作成するには、この

ParentView.h

@protocol IAmYourFatherAndMotherProtocol 

@class ChildView; 

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

@property (nonatomic) NSInteger statusID; 

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

@end 

のように見える、デリゲートパターンを作成する必要があります代理人として「自己」を設定する必要があります。例:

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

関連する問題