Место, где хранятся кнопки, не имеет значения для их перемещения. Вы должны иметь рутину, которая оживляет их. Вы можете сделать это вручную, переместив их на небольшое количество в ответ на тик по таймеру. Самый простой способ - это быстрое перечисление по вашему массиву.
Таким образом, у вас есть подпрограмма генерации, которая есть в вашем выражении, подпрограмма перемещения и сенсорный обработчик IBAction, который удаляет кнопку из массива. Процедура генерации и процедура перемещения будут вызываться в вашем обработчике отметок времени. (Я склонен называть этот метод «handleTick»)
В псевдо-коде высокого уровня это будет примерно так:
//tick handler
handleTick:
one out a hundred times, make a new button
give it a random starting location
store it in the buttons array
every time:
for button in buttons:
move button a few pixels
//button touch handler
buttonWasTouched:button :
[buttons removeObject: button];
Я только вхожу в систему, предоставленную анимацией, поэтому я не знаю, может ли ваша кнопка принимать прикосновения во время анимации, но я не удивлюсь.