2010-12-02 8 views
0

私はUIViewにアニメーションブロックを持っていて、私のアニメーションが終了したらオブジェクトを配列から削除できるように、オブジェクトをanimationDidStopSelectorに渡したいと思います。オブジェクトを@selectorに渡す

次のコードは機能しません。

[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]; 
} 

セレクタにオブジェクトを渡すにはどうすればよいですか?

ありがとうございました

答えて

2

UIViewリファレンスを確認してください。あなたは+ setAnimationDisStopSelectorに渡すセレクター:メソッドは、フォーム

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

のものでなければならないあなたは、アニメーションのコンテキストを使用して、そのセレクタに、あなたのオブジェクトを渡すことができます(+ beginAnimationsにパラメータとして渡されたvoid *型のポインタ:コンテキスト:呼び出し)

+0

おかげで...私はブロックのAPIを使用したい(ずっと簡単)、しかし従来のユーザーのためにはできません。 – joec

+0

はい、私は3.xユーザーもサポートしなければならず、悲しいことに、すべてのブロックapisを探していました(そして、まだマネージャーに古いバージョンを削除させることはできません – Vladimir

0

あなたのセレクタが署名従う必要があります:

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

をし、カスタムオブジェクトを渡すために、それはcontextがために使用されているものです:あなたは[UIView beginAnimations:someId context:yourCustomObject];とそれを設定します。 yourCustomObjectは保持されません。

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

関連する問題