【发布时间】:2016-09-23 01:05:47
【问题描述】:
当有互联网时,我似乎无法导航到新的 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
正如您所见,两种打印都有效,但似乎跳过了执行转场。
我已将 @IBAction func go 添加到视图控制器,当单击按钮时,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 不执行 关闭 WiFi -> 查看 Goes Yelloe 打开飞行模式->查看变红 关闭飞行模式并重新打开 Wifi - Segue 有效。
【问题讨论】:
-
“prepare forSegue”方法在哪里??
-
我添加了完整的 ViewController。它在函数中:internetEnabled()
标签: ios swift reachability