У меня возник вопрос относительно быстрой реализации метода, указанного в названии. Если я это сделаю:UIView.animateWithDuration завершение
leadingSpaceConstraint.constant = 0
UIView.animateWithDuration(0.3, animations: {
self.view.layoutIfNeeded()
}, completion: { (complete: Bool) in
self.navigationController.returnToRootViewController(true)
})
У меня возникает следующая проблема: Отсутствует аргумент для параметра «delay» в вызове. Это происходит только в том случае, если у меня есть self.navigationController.returnToRootViewController() в части завершения. Если я извлечу этот отчет в отдельный метод, например:
leadingSpaceConstraint.constant = 0
UIView.animateWithDuration(0.3, animations: {
self.view.layoutIfNeeded()
}, completion: { (complete: Bool) in
self.returnToRootViewController()
})
func returnToRootViewController() {
navigationController.popToRootViewControllerAnimated(true)
}
Тогда он отлично работает и делает именно то, что я хочу. Конечно, это не идеальное решение и больше похоже на работу. Может ли кто-нибудь сказать мне, что я сделал не так, или почему Xcode (бета-версия 6) ведет себя так?
Это долгое время было распространенной причиной вопросов. Это всегда проявляется по-разному ... см. Ответ здесь: http: //stackoverflow.com/questions/24338842/what-am-i-doing-wrong-in-swift-for-calling-this-objective-c-block- api-call/24347498 # 24347498 – Jack
Возможный дубликат [анимацияWithDuration: анимация: завершение: в Swift] (http://stackoverflow.com/questions/24296023/animatewithdurationanimationscompletion-in-swift) – Jack
Ha. Я знал, что об этом ответили раньше, но не нашел обманщика. (На самом деле, я почти уверен, что я ответил на это до этого обмана, но я не могу найти его в своей истории.) – rickster