Следуя обычным соглашениям, вы объявите функции с несколько иной формулировкой:
prepareContent(_ Content, completionHandler: { () -> Void })
animateContent(completionHandler: { () -> Void })
Затем, ниже SET UP SKVIEW, вы будете вызывать функции делегата следующим образом:
delegate?.prepareContent(content, completionHandler: {
self.delegate.animateContent(completionHandler: {
// do whatever needs to be done upon completion
})
})
(Вы также можете использовать синтаксис конечного замыкания.) Вложив подобные вызовы делегатов, вы убедитесь, что анимация выполняется только после завершения подготовки.
Тела функций будут выглядеть следующим образом:
func prepareContent(_ content: Content, completionHandler: (() -> Void)) {
// ...
completionHandler()
}
func animateContent(completionHandler: (() -> Void)) {
// ...
completionHandler()
}
И если вы предпочитаете иметь дополнительные обработчики завершения, т. Е. Те, которые могут быть нулевыми, измените функцию следующим образом:
func prepareContent(_ content: Content, completionHandler: (() -> Void)?) {
// ...
completionHandler?()
}