傻瓜式自定义函数的CompletionHandler

问题描述:

我在网上到处搜索,但无法真正处理我找到的答案。所以如果有人可以帮助我,这是值得赞赏的。傻瓜式自定义函数的CompletionHandler

我写了一个函数,看起来像这样:我这样称呼它

func setImage(imageName: String, completion: ((String) -> Void)?) { 
    UIView.transitionWithView(self.myImageView, duration: 0.3, options: .CurveEaseOut, animations: { 
     self.lockImageView.image = UIImage(named: "\(imageName).png") 
     }, completion: { finished in 
      //execute the completionBlock that was passed 
    }) 
} 

setImage("lockCheck", completion: { finished in 
    print("done") 
}) 

现在,我该如何执行任何已为完成过去?
在功能方面,在转型的完成块,我想是这样

for x in completion {self.x} 

,但没有奏效。

感谢提前:)

例如,你可以像这样执行完成处理程序马上在completionHandler动画块:

func setImage(imageName: String, completion: ((Bool) -> Void)?) { 
    UIView.transitionWithView(self.myImageView, duration: 0.3, options: .CurveEaseOut, animations: {() -> Void in 
      self.lockImageView.image = UIImage(named: "\(imageName).png") 
     }, completion: completion) 
} 

您也可以运行带有额外参数的完成处理喜欢以下(我希望这是很清楚):

func setImage(imageName: String, completion: ((Bool, String) -> Void)?) { 
    UIView.transitionWithView(self.lockImageView, duration: 0.3, options: .CurveEaseOut, animations: {() -> Void in 
     self.lockImageView.image = UIImage(named: "\(imageName).png") 
      }) { (finished) -> Void in 

      // Do some things for example print 
      print("Hi, this is the animation completion handler") 

      // Notice the ? because the completion handler is an optional 
      completion?(finished, "some string") 

    } 
} 
+0

你试过吗?因为我得到一个错误 – LinusGeffarth

+0

是的,它编译在这里,你有什么版本的Xcode? – Wesley

+0

好吧,我的坏。我在某处读到它必须是“完成:(字符串)”而不是“(布尔)”,因此它会抱怨。所以修复它,但它并没有真正回答这个问题。 – LinusGeffarth