0

首先我的代码

 func checkInternetConnection() {

    reachability.whenReachable = { _ in
            self.loadPost()
            self.checkNewMessages()
            self.slowView.frame.size.height = 0
            self.slowView.isHidden = true
            self.internetStatus.text = ""
            self.slowView.layer.zPosition = 0
    }
    reachability.whenUnreachable = { _ in
        self.refreshControl.endRefreshing()
        self.slowView.backgroundColor = #colorLiteral(red: 1, green: 0.1491314173, blue: 0, alpha: 1)
        self.slowView.layer.zPosition = 1
        self.slowView.frame.size.height = 40
        self.slowView.isHidden = false
        self.internetStatus.text = "Keine Internetverbindung!"
        self.activityIndicatorView.stopAnimating()
        self.Indicator.stopAnimating()

    }
    NotificationCenter.default.addObserver(self, selector: #selector(self.internetChanged(note:)), name: Notification.Name.reachabilityChanged, object: self.reachability)
    do {
        try self.reachability.startNotifier()
    }catch {
        print("error")
    }

}

@objc func internetChanged(note: Notification) {
    let reachability = note.object as! Reachability
    if reachability.connection != .none {
            self.slowView.backgroundColor = #colorLiteral(red: 0.3411764801, green: 0.6235294342, blue: 0.1686274558, alpha: 1)
            self.slowView.layer.zPosition = 1
            self.slowView.frame.size.height = 40
            self.slowView.isHidden = false
            self.internetStatus.text = "Mit dem Internet verbunden!"
            DispatchQueue.main.asyncAfter(deadline: .now() + 3 , execute: {
                self.slowView.layer.zPosition = 0
                self.slowView.frame.size.height = 0
            })

    } else {
        print("kein internet")
    }

}

我在 viewDidLoad() 中调用 checkInternetConnection() 方法,它工作正常,但是一旦我刷新我的 tableview,它就不会进入可达性闭包。

在 handleRefresh() (仅用于重新加载帖子时工作正常)调用 checkInternetConnection() 方法但不会触发任何代码,该问题仅在刷新时出现,而不是在初始加载时出现。

我将此视频用作参考: https ://www.youtube.com/watch?v=wDZmz9IsB-8 有 什么建议吗?

4

1 回答 1

2

我认为(但不是 100% 确定)只有在发生适当的可达性更改时才会调用闭whenReachablewhenUnreachable;此外,它们可能会在分配时被自动调用。因此,除非设备脱机/联机,否则无论您多久调用checkInternetConnection一次闭包都不会重新执行。

为了解决这个问题,我建议改用可达性标志:

if reachability.isReachable {
  // update view for reachable state
}
else {
  // update view for unreachable state
}
于 2018-02-15T11:12:04.373 回答