我有一個關於在標題提到的方法中快速實現的問題。如果我這樣做:UIView.animateWithDuration完成
leadingSpaceConstraint.constant = 0
UIView.animateWithDuration(0.3, animations: {
self.view.layoutIfNeeded()
}, completion: { (complete: Bool) in
self.navigationController.returnToRootViewController(true)
})
我得到以下問題:在調用中缺少參數'延遲'的參數。這隻會發生,如果我有完成部分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 2014-08-31 20:49:58
[animateWithDuration:animations:completion:in Swift]的可能重複(http://stackoverflow.com/questions/24296023/animatewithdurationanimationscompletion-in-swift) – Jack 2014-08-31 20:50:58
Ha。我知道這是以前的答案,但沒有找到這個騙局。 (其實,我很確定我已經在這個愚蠢的遊戲之前回答了它,但是我在我的歷史中也找不到它。) – rickster 2014-08-31 21:17:17