2011-12-12 55 views
0

我的第一個觀點PageView.m這樣如何在viewClass類通知另一個View類

PageView.m

albumListView = [[AlbumListView alloc] initWithFrame:CGRectMake(0, 0, 45, 480)]; 
albumListView.tag = 1001; 
[self addSubview:albumListView]; 
albumListView.hidden = YES; 
[albumView release]; 

我想,當我CameraView感動設置albumListView.hidden = NO。 如何做到這一點!

CameraView.m

-(void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
} 

如何使用委託或其他方式? 謝謝!

回答

0

假設PageView類是創建CameraView實例,其中,你可以做STHG這樣的:

在你CameraView類,像這樣定義一個協議:

@class CameraView; 
@protocol CameraViewDelegate <NSObject> 

@optional 
- (void)cameraViewMoved:(CameraView *)view; 
@end 

然後,在同類實現一個屬性來容納您的代理人:

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

在您的CameraView實現文件中,ca LL,當你想你委託的cameraViewMoved方法來通知它,就像這樣:

if ([self.delegate respondsToSelector:@selector(cameraViewMoved:)]) { 
     [self.delegate cameraViewMoved:self]; 
} 

讓你PageView類的CameraView的委託,通過將STHG像這樣在你的PageView.h文件:

@interface PageView : <CameraViewDelegate> 

而在PageView.m類中,首先將自己設置爲cameraView的代表,方法是像cameraView.delegate = self; 然後執行協議方法cameraViewMoved。在這個方法裏面,你可以做你需要的。

+0

非常感謝 – pengfei

+1

不要忘記添加「@class CameraView」,以便您的編譯器知道您稍後將實現CameraView(因爲您將其引用到CameraView接口上方,因此,編譯器不知道CameraView尚未)。 – ThomasM

+0

是的,ThomasM是對的。我編輯了我的答案。 – aslisabanci