Передайте @selector объект - PullRequest
       23

Передайте @selector объект

0 голосов
/ 02 декабря 2010

У меня есть блок анимации в 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 ]

2 голосов
/ 02 декабря 2010

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

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

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

0 голосов
/ 02 декабря 2010

Вы не можете просто передать произвольный селектор с произвольным числом аргументов.Если вы проверяете документацию, она должна иметь форму

(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:

0 голосов
/ 02 декабря 2010

Ваш селектор должен следовать подписи:

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

И чтобы передать ему пользовательский объект, для этого используется context: вы устанавливаете его с помощью [UIView beginAnimations:someId context:yourCustomObject];. Обратите внимание, что yourCustomObject не сохраняется!

...