【问题标题】: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
     }
    }
    

    【讨论】:

    • 我也有这个想法,但我想要更优雅的方式来做到这一点
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-14
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多