2010-12-02 2 views
0

У меня есть блок анимации на UIView и хотел бы передать мой объект animationDidStopSelector, так что, когда моя анимация закончится, объект можно удалить из массива.Pass @selector a object

Следующий код, не работает.

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

Как передать свой селектор объекта?

Thanks

ответ

2

Проверьте ссылку UIView. Selector вы передаете + setAnimationDisStopSelector: метод должен быть в форме

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

Вы можете передать свой объект в селектором с помощью анимации контекста (аннулируются * указатель, переданный в качестве параметра в + beginAnimations: Контекст: вызов)

+0

Спасибо ... Я хотел бы использовать блоки API (гораздо проще), но не может для устаревших пользователей. – joec 2010-12-02 12:30:52

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: