【发布时间】:2014-11-01 04:27:49
【问题描述】:
我正在使用新语言 Swift 构建一个 iOS 应用程序。现在它是一个 HTML5 应用程序,使用 UIWebView 显示 HTML 内容。该应用程序具有本地通知,我想要做的是当应用程序通过单击(触摸)本地通知进入前台时触发 UIWebView 中的特定 javascript 方法。
我看过这个question,但它似乎并没有解决我的问题。我也遇到过这个question,它告诉我有关使用 UIApplicationState 的信息,这很好,因为这可以帮助我知道应用程序从通知进入前台。但是当应用程序恢复时,我如何在应用程序恢复时显示的视图的 viewController 中调用方法?
我想做的是获取我的 ViewController 的一个实例并将其中的一个属性设置为 true。内容如下
class FirstViewController: UIViewController,UIWebViewDelegate {
var execute:Bool = false;
@IBOutlet var tasksView: UIWebView!
}
在我的 AppDelegate 中我有方法
func applicationWillEnterForeground(application: UIApplication!) {
let viewController = self.window!.rootViewController;
let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
var setViewController = mainStoryboard.instantiateViewControllerWithIdentifier("FirstView") as FirstViewController
setViewController.execute = true;
}
所以我想做的是当应用程序再次进入前台时,我想查看执行变量并运行如下方法,
if execute{
tasksView.stringByEvaluatingJavaScriptFromString("document.getElementById('sample').click()");
}
我应该将用于从 webview 触发 javascript 的逻辑代码放在哪里?是在 viewDidLoad 方法上,还是在 webView 委托方法之一上?我试图将该代码放在 viewDidLoad 方法中,但布尔执行的值设置为其初始值,而不是应用程序进入前台时在委托中设置的值。
【问题讨论】:
-
所以我写了一篇关于我真正想要什么以及我如何解决问题的博客文章,请阅读它。 captaindanko.blogspot.com.au/2014/12/…
标签: ios uiwebview swift uilocalnotification