當互聯網時,我似乎有麻煩導航到一個新的賽格。Swift:執行Segue沒有發射 - 沒有錯誤(可達性)
在互聯網連接的情況下我有這樣的:
case ReachableViaWiFi:
view.backgroundColor = .green
internetEnabled()
當應用程序運行在瀏覽預期變爲綠色。正如你可以看到裏面還有功能internetEnabled()這哪裏是執行SEGUE是:
func internetEnabled() {
print("1")
self.performSegue(withIdentifier: "InternetSegue", sender: self)
print("2")
}
這是結果:
控制檯輸出:
可達標誌狀態:-R ------- networkStatusForFlags
正如你可以看到兩個打印工作,但它似乎跳過執行segue。
我已添加@IBAction func去到視圖控制器,當按鈕被點擊時,segue導航到正確的ViewController。
全部ViewController.Swift
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?
更新當設備
打開應用測試。 Segue不執行 關閉WiFi - >查看Go Yelloe 打開飛行模式 - >查看變爲紅色 關閉飛行模式並重新打開Wifi - Segue正常工作。
哪裏是「準備forSegue」的方法? – Janmenjaya
我添加了完整的ViewController。它在func中:internetEnabled() – JamesG