在数组中存储函数或替代方法

时间:2015-02-03 18:54:07

标签: swift closures

我正在为iOS编写swift程序。我有一个节点,其中有几个子节点并排排列。

我有两个不同的函数可以改变这些节点的位置。

一个将左侧节点移动到右侧,另一个节点将所有节点移动到某个点(因为一个节点已被移除')

问题是这些调用是异步完成的。一个是完成渲染,另一个是在用户交互之后完成的。因此,当用户进行交互并且滑动节点中存在移动时,它们会相互干扰。

我的解决方案是将两个函数存储在一个数组中,然后在“更新”中调用它们。事件。每个功能锁定'节点,以便在完成之前不会调用另一个函数。

我的问题是,如何在Swift中存储和执行这些函数。

我有

var actionQueue:[(()->())]

在班上。

但是如何添加功能呢?

actionQueue.append(shiftNodesTowards(position: CGPoint))

我该如何执行?

if !positionLock && actionQueue.count > 0 {
     var toDo = actionQueue.removeAtIndex(0)
}

谢谢!

1 个答案:

答案 0 :(得分:0)

你不必像那样复杂的事情。只需锁定用户输入,直到使用beginIgnoringInteractionEvents完成非交互式操作:

UIApplication.sharedApplication().beginIgnoringInteractionEvents()
//call after your method is done:
UIApplication.sharedApplication().endIgnoringInteractionEvents()