当我们按下主页按钮并在使用其他应用程序 return 返回该应用程序后,将在 AppDelegate 中触发哪个方法
Which method would get triggered in AppDelegate when we press the home button and after using some other application return back to that application
这是我关于堆栈溢出的第一个问题,请耐心等待。
我正在使用 WKWebView
制作单视图应用程序。它使用 url
简单地加载网络应用程序
我在做什么,我想要什么,我已经在下面解释了一切
Xcode版本:11.7
iOS版本:13.7
这是 ViewController
中的 Outlet
。
@IBOutlet var webView: WKWebView!
此 webView
通过调用 viewDidLoad()
中的以下函数获取负载。
func loadMoma() {
if let safeUrl = URL(string: url) {
let request = URLRequest(url: safeUrl)
webView.load(request)
}
}
这是我的 viewDidLoad()
override func viewDidLoad() {
super.viewDidLoad()
check = ConnectivityCheck.Connection()
if check {
loadMoma()
}
}
此处 ConnectivityCheck.Connection()
returns 如果可以访问互联网则为真,如果没有则为假。
使用此检查 loadMoma()
被调用。
如果没有连接,什么也不会发生,在 viewDidAppear()
方法中,会调用 Alert
函数,这里是代码。
override func viewDidAppear(_ animated: Bool) {
if !check {
self.Alert(Message: "Connection error!, please enable the Internet.")
}
}
Alert()
方法的定义:-
func Alert (Message: String){
let alert = UIAlertController(title: "No Connectivity.", message: Message, preferredStyle: .alert)
let action = UIAlertAction(title: "Go to settings", style: .default) { (action) in
if let settingsUrl = URL.init(string: UIApplication.openSettingsURLString), UIApplication.shared.canOpenURL(settingsUrl) {
UIApplication.shared.openURL(settingsUrl)
}
}
alert.addAction(action)
present(alert, animated: true, completion: nil)
}
这会导致警报和一个按钮导航到 iPhone 的设置以启用互联网。
Output of Alert method
我想要什么
当用户 returns 从设置到应用程序时,在 AppDelegate
中,应该调用 loadMoma()
方法。
为此,我在 class AppDelegate
中创建了一个 ViewController
的实例,如下所示:-
var vc = ViewController()
我在 applicationWillEnterForeground
中调用 loadMoma
是这样的:-
func applicationWillEnterForeground(_ application: UIApplication) {
print("applicationWillEnterForeground")
if !flag {
vc.loadMoma()
}
}
其中 flag
与 check
相同。
但问题是,当我按下主页按钮或在 运行 app.
时导航到设置时,甚至打印都没有被触发
请告诉我应该将 vc.loadMoma()
放在 AppDelegate
的什么位置才能获得我上面描述的功能。
提前致谢
由于您使用的是 iOS 13.7 版和 Xcode 11.7 版,您应该必须使用场景委托生命周期方法来完成您的要求。
每当用户从其他应用程序返回到您的应用程序时,SceneDelegate 的 sceneWillEnterForeground 和 sceneDidBecomeActive 方法将被触发。因此,您可以将用于检查互联网连接并调用 loadMoma() 方法的代码放在 sceneWillEnterForeground 方法中。
#HappyCoding
尝试将您想要在应用程序打开时执行的代码放在 applicationDidBecomeActive 中,并将您想要的代码放在 运行 退出时,在 applicationDidEnterBackground 中,在 App Delegate 中。
这是我关于堆栈溢出的第一个问题,请耐心等待。
我正在使用 WKWebView
制作单视图应用程序。它使用 url
简单地加载网络应用程序
我在做什么,我想要什么,我已经在下面解释了一切
Xcode版本:11.7
iOS版本:13.7
这是 ViewController
中的 Outlet
。
@IBOutlet var webView: WKWebView!
此 webView
通过调用 viewDidLoad()
中的以下函数获取负载。
func loadMoma() {
if let safeUrl = URL(string: url) {
let request = URLRequest(url: safeUrl)
webView.load(request)
}
}
这是我的 viewDidLoad()
override func viewDidLoad() {
super.viewDidLoad()
check = ConnectivityCheck.Connection()
if check {
loadMoma()
}
}
此处 ConnectivityCheck.Connection()
returns 如果可以访问互联网则为真,如果没有则为假。
使用此检查 loadMoma()
被调用。
如果没有连接,什么也不会发生,在 viewDidAppear()
方法中,会调用 Alert
函数,这里是代码。
override func viewDidAppear(_ animated: Bool) {
if !check {
self.Alert(Message: "Connection error!, please enable the Internet.")
}
}
Alert()
方法的定义:-
func Alert (Message: String){
let alert = UIAlertController(title: "No Connectivity.", message: Message, preferredStyle: .alert)
let action = UIAlertAction(title: "Go to settings", style: .default) { (action) in
if let settingsUrl = URL.init(string: UIApplication.openSettingsURLString), UIApplication.shared.canOpenURL(settingsUrl) {
UIApplication.shared.openURL(settingsUrl)
}
}
alert.addAction(action)
present(alert, animated: true, completion: nil)
}
这会导致警报和一个按钮导航到 iPhone 的设置以启用互联网。 Output of Alert method
我想要什么
当用户 returns 从设置到应用程序时,在 AppDelegate
中,应该调用 loadMoma()
方法。
为此,我在 class AppDelegate
中创建了一个 ViewController
的实例,如下所示:-
var vc = ViewController()
我在 applicationWillEnterForeground
中调用 loadMoma
是这样的:-
func applicationWillEnterForeground(_ application: UIApplication) {
print("applicationWillEnterForeground")
if !flag {
vc.loadMoma()
}
}
其中 flag
与 check
相同。
但问题是,当我按下主页按钮或在 运行 app.
请告诉我应该将 vc.loadMoma()
放在 AppDelegate
的什么位置才能获得我上面描述的功能。
提前致谢
由于您使用的是 iOS 13.7 版和 Xcode 11.7 版,您应该必须使用场景委托生命周期方法来完成您的要求。
每当用户从其他应用程序返回到您的应用程序时,SceneDelegate 的 sceneWillEnterForeground 和 sceneDidBecomeActive 方法将被触发。因此,您可以将用于检查互联网连接并调用 loadMoma() 方法的代码放在 sceneWillEnterForeground 方法中。
#HappyCoding
尝试将您想要在应用程序打开时执行的代码放在 applicationDidBecomeActive 中,并将您想要的代码放在 运行 退出时,在 applicationDidEnterBackground 中,在 App Delegate 中。