【发布时间】:2018-01-09 07:42:32
【问题描述】:
我一直在尝试检查互联网连接。如果设备连接到互联网,那么它会转到 MainStoryboard 上的初始 viewController,否则它会在同一个故事板上显示另一个 viewController。但是这段代码对我不起作用。我没有收到任何错误,它只是不起作用。
这里是截图: Screenshot
这是我在 AppDelegate.swift 中写的:
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
var reachability: Reachability?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
UIApplication.shared.statusBarStyle = .lightContent
NotificationCenter.default.addObserver(self, selector: #selector(ReachabilityCheck(_:)), name: NSNotification.Name.reachabilityChanged, object: nil)
return true
}
而功能是:
@objc func ReachabilityCheck(_: Notification) {
var remoteHostStatus = self.reachability!.currentReachabilityStatus()
if remoteHostStatus == NotReachable
{
let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let offlineViewController = mainStoryboard.instantiateViewController(withIdentifier: "notReachable") as! notReachableViewController
window!.rootViewController = offlineViewController
window!.makeKeyAndVisible()
}else
{
let mainStoryboard = UIStoryboard(name: "Main", bundle: nil)
let initialViewController = mainStoryboard.instantiateViewController(withIdentifier: "mainNav") as! UINavigationController
window!.rootViewController = initialViewController
window!.makeKeyAndVisible()
}
}
我应该怎么做才能让它工作?请帮忙!
【问题讨论】:
-
你在哪里设置
reachability属性?请遵守命名约定。类/结构以大写字母开头,变量和函数/方法以小写字母开头。 -
我已经从苹果下载了这个属性:link
-
不,
var reachability: Reachability?已声明但未初始化。该物业是nil。要监控可达性,您必须初始化Reachability实例并将其分配给属性。目前代码什么也不做。 -
我在 AppDelegate.swift 中的
didFinishLaunchingWithOptions launchOptions中初始化了self.reachability = Reachability.forInternetConnection() self.reachability?.startNotifier(),但它仍然不起作用。 -
你是说你想在应用程序启动并且它有连接时转到初始视图控制器,如果它没有连接它会转到另一个控制器,还是你想持续监控状态并在设备失去连接时更改?
标签: ios swift swift4 reachability