Vie*_*ens 6 cocoa-touch ios swift
有没有一种方法可以shouldPerformSegueWithIdentifier从我的闭包中返回方法的值?或者我应该采取不同的做法?
override func shouldPerformSegueWithIdentifier(identifier: String?, sender: AnyObject?) -> Bool {
getDataFromSomewhere() { succeeded, data in
if succeeded {
// Should return true here
} else {
self.errorAlert("Error", message: "Can't get data...")
// Should return false here
}
}
}
Run Code Online (Sandbox Code Playgroud)
您无法shouldPerformSegueWithIdentifier:sender:从放置的位置返回// Should return true here。你需要做这样的事情:
override func shouldPerformSegueWithIdentifier(identifier: String?, sender: AnyObject?) -> Bool {
var returnValue: Bool = false
getDataFromSomewhere() { succeeded, data in
if succeeded {
returnValue = true
} else {
self.errorAlert("Error", message: "Can't get data...")
returnValue = false
}
}
return returnValue
}
Run Code Online (Sandbox Code Playgroud)
getDataFromSomewhere请注意,只有在返回之前执行闭包时,这才有效getDataFromSomewhere。如果getDataFromSomewhere存储闭包,并安排稍后调用它(例如,在异步网络请求之后),那么这将不起作用。它只会shouldPerformSegueWithIdentifier:sender:返回您用于初始化的值returnValue。
| 归档时间: |
|
| 查看次数: |
4795 次 |
| 最近记录: |