如何在viewClass中通知另一个View类

时间:2011-12-12 11:33:19

标签: iphone objective-c ios cocoa-touch

我的第一个视图PageView.m就像这样

  

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
{
}

如何使用委托或其他方式? 谢谢!

1 个答案:

答案 0 :(得分:1)

假设PageView类是创建CameraView实例的地方,你可以这样做:

CameraView课程中,定义如下协议:

@class CameraView;
@protocol CameraViewDelegate <NSObject>

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

然后,在同一个类中实现一个属性来保存你的委托:

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

在您的CameraView实施文件中,当您想要通知它时,请调用您委托的cameraViewMoved方法,如下所示:

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

PageView类作为CameraView的委托,将此类似的内容添加到PageView.h文件中:

@interface PageView : <CameraViewDelegate>

在PageView.m类中,首先将自己设置为cameraView的委托,方法是cameraView.delegate = self; 然后,实现协议方法cameraViewMoved。在这种方法中,你可以做你需要的。