当有互联网时,我似乎无法导航到新的segue。
在互联网连接的情况下,我有这个:
case ReachableViaWiFi:
view.backgroundColor = .green
internetEnabled()
当应用运行时,视图会按预期变为绿色。如你所见,还有函数 internetEnabled(),这是执行segue的地方:
func internetEnabled() {
print("1")
self.performSegue(withIdentifier: "InternetSegue", sender: self)
print("2")
}
结果如下:
可达性标志状态:-R ------- networkStatusForFlags
1
2
正如你可以看到两个印刷品都工作但它似乎跳过了执行segue。
我已将 @IBAction func go 添加到视图控制器中,当单击该按钮时,segue导航到正确的ViewController。
import UIKit
import SystemConfiguration
var reachability = Reachability()
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
NotificationCenter.default.addObserver(self, selector: #selector(reachabilityStatusChanged(_:)), name: .reachabilityChanged, object: nil)
}
@IBAction func go(_ sender: AnyObject) {
performSegue(withIdentifier: "InternetSegue", sender: self)
}
func updateInterfaceWithCurrent(networkStatus: NetworkStatus) {
switch networkStatus {
case NotReachable:
view.backgroundColor = .red
print("No Internet")
case ReachableViaWiFi:
view.backgroundColor = .green
internetEnabled()
case ReachableViaWWAN:
view.backgroundColor = .yellow
print("Reachable Cellular")
default:
return
}
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
//
updateInterfaceWithCurrent(networkStatus: reachability.currentReachabilityStatus())
}
func reachabilityStatusChanged(_ sender: NSNotification) {
guard let networkStatus = (sender.object as? Reachability)?.currentReachabilityStatus() else { return }
updateInterfaceWithCurrent(networkStatus: networkStatus)
}
override func viewWillDisappear(_ animated: Bool) {
NotificationCenter.default.removeObserver(self, name: .reachabilityChanged, object: nil)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func internetEnabled() {
print("1")
performSegue(withIdentifier: "InternetSegue", sender: self)
print("2")
}
}
当有互联网时,是否可以有人帮助我使用此功能执行segue?
在设备上测试时
打开应用。塞格没有表现 关闭WiFi - > View Goes Yelloe 打开飞行模式 - >视图变红了 关闭飞机模式并重新打开Wifi - Segue工作正常。
答案 0 :(得分:0)
这有点偏离主题,但在尝试请求之前不要使用Reachability来检测网络是否在线。发出请求并处理错误。仅使用Reachability检测网络在脱机后是否重新联机 - 在这种情况下,如果您的上一个请求导致错误,请重试。
这篇文章更详细地解释了它:Reachability responding with wrong status code in iOS 7 iphone 5