0

インターネットであらゆる場所を検索しましたが、見つけた答えに実際には対処できませんでした。誰かがここで私を助けることができれば、それはありがたいです.

次のような関数を書きました。

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}

しかし、それはうまくいきませんでした。

前もって感謝します :)

4

1 に答える 1

1

たとえば、次のように、アニメーション ブロックの 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")

    }
}
于 2015-11-20T15:54:25.300 に答える