【问题标题】:Swift 3: get information from server in ViewDidLoad and when click a button, wait for information response from serverSwift 3:在 ViewDidLoad 中从服务器获取信息,当单击按钮时,等待服务器的信息响应
【发布时间】:2017-03-02 03:46:27
【问题描述】:
在我的应用程序中,我想在 ViewDidLoad 中调用一个异步函数(使用 alamofire),并且用户在按下按钮之前仍然可以与视图交互,如果异步函数不是,我希望应用程序显示进度 hud完成或如果完成则转到下一个视图。我不想在单击按钮时调用异步函数,因为有时可能需要等待更长的时间,而我在 ViewDidLoad 处调用异步函数
我该怎么做?
【问题讨论】:
标签:
swift
xcode
asynchronous
alamofire
【解决方案1】:
编辑 - 使用枚举来保存视图控制器状态
enum State {
case Loading
case Ready
case ShowNext
}
var state: State
func viewDidLoad() {
state = .Loading
makeAsyncCall() { (finished) in
if state == .ShowNext {
showNext()
} else {
state = .Ready
}
}
}
func buttonTapped() {
if state == .Ready {
showNext()
} else {
state = .ShowNext
}
}