传递@selector一个对象

时间:2010-12-02 12:02:50

标签: iphone objective-c animation uiview selector

我在UIView上有一个动画块,想要传递我的animationDidStopSelector一个对象,这样当我的动画结束时,可以从一个数组中删除该对象。

以下代码不起作用。

[UIView setAnimationDidStopSelector:@selector(animationDidStopWithObject:)];
    self.dialogController.view.alpha=1;
[UIView commitAnimations];

    [self.view addSubview:self.dialogController.view];
}

- (void)animationDidStopWithObject:(NSString*)obj {
    [items removeObject:obj];
    [self.tableView reloadData];
}

如何将选择器传递给对象?

由于

3 个答案:

答案 0 :(得分:2)

检查UIView参考。传递给+ setAnimationDisStopSelector的方法:方法必须是

形式
- (void)animationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context

您可以使用动画上下文将对象传递给该选择器(在* beginAnimations:context:call中作为参数传递的void *指针)

答案 1 :(得分:0)

您的选择器需要遵循签名:

- (void)animationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context

要传递一个自定义对象,这就是context的用途:您使用[UIView beginAnimations:someId context:yourCustomObject];进行设置。请注意,yourCustomObject不会被保留!

答案 2 :(得分:0)

您不能只传递具有任意数量参数的任意选择器。如果您查看文档,则需要采用

格式
(void)animationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context

以下是相关文档:

http://developer.apple.com/library/ios/documentation/UIKit/Reference/UIView_Class/UIView/UIView.html#//apple_ref/occ/clm/UIView/setAnimationDidStopSelector