我已经实现了三个3D触摸动作,让它们命名app.touch1,app.touch2然后app.touch3.
这是我AppDelegate文件中的代码:
func application(application: UIApplication, performActionForShortcutItem shortcutItem: UIApplicationShortcutItem, completionHandler: (Bool) -> Void) {
if(shortcutItem.type == "app.touch1"){
MyVariables.url = "https://google.de/";
} else if(shortcutItem.type == "app.touch2") {
MyVariables.url = "https://yahoo.de/";
} else if(shortcutItem.type == "app.touch3") {
MyVariables.url = "https://bing.de/";
}
}
Run Code Online (Sandbox Code Playgroud)
这是我MyVariables现在的课程:
struct MyVariables {
static var url = "https://test.de/"
}
Run Code Online (Sandbox Code Playgroud)
这是我ViewController班级的代码:
IBOutlet var containerView : UIView?
var webView: UIWebView?
var loadedURL: String?
override func prefersStatusBarHidden() -> Bool {
return true
}
override func loadView() {
super.loadView()
self.webView = UIWebView()
self.view = self.webView!
}
override func viewDidLoad() {
super.viewDidLoad()
load()
}
func load() {
let requestURL = NSURL(string: MyVariables.url)
let request = NSURLRequest(URL: requestURL!)
self.webView!.loadRequest(request)
loadedURL = MyVariables.url
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
Run Code Online (Sandbox Code Playgroud)
但是,它总是加载默认的url(https://test.de/),即使应用程序之前已关闭.我试着活动,如viewDidAppear和viewWillAppear也,但没有奏效.
我认为这对于iOS开发人员来说非常简单 - 我试图从iOS开始并遇到这个问题:-(
所以看起来这只是你的结构的问题?
我会尝试在 AppDelegate 中设置一个全局变量,然后在 ViewController 中使用它。
例如:
在AppDelegate中创建一个 url 变量。
在你的ViewController中使用:
func load() {
let delegate = UIApplication.sharedApplication().delegate as AppDelegate
let requestURL = NSURL(string: delegate.url)
let request = NSURLRequest(URL: requestURL!)
self.webView!.loadRequest(request)
loadedURL = MyVariables.url
}
Run Code Online (Sandbox Code Playgroud)
尝试一下,应该可以。另一个想法是将其存储为 Singleton,请在此处查看:
https://github.com/hpique/SwiftSingleton
或者(这取决于您要存档的数据)-> 将其存储为 NSUserDefaults()