У меня есть контроллер, который добавляет в качестве подзадач пользовательский класс UIView
под названием Circle
. Назовем конкретный экземпляр Circle
, «круг».Как проверить, закончится ли анимация, если анимационный блок равен
У меня есть метод в Circle
, animateExpand
, который расширяет круг, оживляя вид.
В следующем коде (который живет в контроллере) Я хочу alloc
и init
круг, добавить его в NSMutableArray circleArray
, анимировать расширение, и в конце расширения, я хочу, чтобы удалить объект из массив. Моя попытка:
Circle *circle = [[Circle alloc] init];
[circleArray addObject:circle];
[circle animateExpand];
[circleArray removeObjectIdenticalTo:circle];
[circle release];
Проблема заключается в том [circleArray removeObjectIdenticalTo:circle];
вызывается до анимации отделки. Предположительно, потому что анимация выполняется на отдельной ветке. Я не могу выполнить удаление в completion:^(BOOL finished){ }
, потому что класс Circle
не знает о circleArray
.
Любые решения были бы полезны, спасибо!
примечание: этот большой материал блока - только iOS4.x! –
Я вижу, что это сработает. За исключением случаев, когда я делаю это, я мог бы переместить весь код анимации в контроллер ... – bogardon
Материал 'circleArray' не является частью интерфейса класса« Circle », поэтому (как вы сказали в своем вопросе) нет никакого способа, чтобы последний знал о первом. Вы можете изменить 'Circle', чтобы принять аргумент блока, который затем переходит к его внутреннему вызову' animateWithDuration: animations: completion: ', но это общее решение для того, что вы хотите сделать. :) –