This question already has answers here:
How to perform Callbacks in Objective-C
(5个答案)
8年前关闭。
我无法弄清楚如何创建一个函数,该函数会将信息提供给父对象,并且已经完成了某些工作,因此我需要您的帮助。
例如我想做什么:
调用 动画结束后,我想向
我需要类似回调的东西。
你能帮忙吗?
使用块作为回调
更新:
在 ButtomView.h 中
在 ButtomView.m 中
在动画编译后,您应该调用
你应该设置你的 ViewController 类来确认协议(protocol) BottomViewDelegate
在 MyViewController.h
和 f.e.在
(5个答案)
8年前关闭。
我无法弄清楚如何创建一个函数,该函数会将信息提供给父对象,并且已经完成了某些工作,因此我需要您的帮助。
例如我想做什么:
ViewController
类实例化类 BottomView
并将其添加为 subview 。 BottomView
类的实例来启动动画。 ViewController
类表明动画已经结束,它可以从自身释放/删除一个实例 BottomView
。 我需要类似回调的东西。
你能帮忙吗?
最佳答案
1.你可以用积木来做!
您可以将一些块传递给BottomView。
2. 或者你可以用 target-action 来做。
你可以传递给 BottomView 选择器 @selector(myMethod:)
作为 Action ,
并将指向 View Controller 的指针作为目标。动画结束后
使用 performeSelector:
方法。
3. 或者你可以定义委托(delegate)@protocol 并在你的viewController 中实现方法,
并在BottomView中添加委托(delegate)属性。
@property (assign) id 委托(delegate);
如果你在你的BottomView中做一些动画,你可以使用
UIView 方法
animateWithDuration:delay:options:animations:completion:
使用块作为回调
[UIView animateWithDuration:1.0f animations:^{
}];
更新:
在 ButtomView.h 中
@class BottomView;
@protocol BottomViewDelegate <NSObject>
- (void)bottomViewAnimationDone:(BottomView *) bottomView;
@end
@interface BottomView : UIView
@property (nonatomic, assign) id <BottomViewDelegate> delegate;
.....
@end
在 ButtomView.m 中
- (void)notifyDelegateAboutAnimationDone {
if ([self.delegate respondsToSelector:@selector(bottomViewAnimationDone:)]) {
[self.delegate bottomViewAnimationDone:self];
}
}
在动画编译后,您应该调用
[self notifyDelegateAboutAnimationDone];
你应该设置你的 ViewController 类来确认协议(protocol) BottomViewDelegate
在 MyViewController.h
@interface MyViewController : UIViewController <BottomViewDelegate>
...
@end
和 f.e.在
viewDidLoad
你应该设置 bottomView.delegate = self;
10-06 09:39