如果我正确理解了您的问题,那么您只需要定义协议:
。H
@protocol YourFrameWorkViewDelegate <NSObject>
- (void)yourFrameWorkViewDidAppear;
@end
@interface YouFrameWorkView : UIView
@property (weak, nonatomic) id <YourFrameWorkViewDelegate> delegate;
@end
.m
@implementation YouFrameWorkView
- (void)didMoveToWindow
{
if ([self.delegate respondsToSelector:@selector(yourFrameWorkViewDidAppear)]) {
[self.delegate yourFrameWorkViewDidAppear];
}
}
@end
或者你可以从你的 VC 调用委托,比如
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
if ([self.view.delegate respondsToSelector:@selector(yourFrameWorkViewDidAppear)]) {
[self.view.delegate yourFrameWorkViewDidAppear];
}
当然,任何想要使用你的框架的应用程序都需要实现该协议。这可能是 rootVCs 视图必须是子类并实现您的协议。这是标准做法。希望它有所帮助。
在您发表评论后跟进:
确保视图实现您的协议
。H
@interface ViewThatUsesYourFrameWork : UIView <YourFrameWorkViewDelegate>
@end
.m
@implementation ViewThatUsesYourFrameWork
- (void)yourFrameWorkViewDidAppear
{
}
@end
并确认委托确实已设置。在您调用 respondsToSelector 之前
if(!self.delegate)NSLog(@"Delegate is not set")