Swift:从后台重新打开app,willEnterForeground在appdelegate之前运行

时间:2015-08-21 22:33:24

标签: ios swift

如果我的应用程序被置于后台(有人单击主页按钮),然后重新打开,我想在我的ViewController中运行一个函数,并且我已经能够使用willEnterForeground()函数来获取它,但我需要在我的应用程序内打开的网址(所以说我在邮件中,我打开一个PDF,我说要在我的应用程序中打开这个pdf),为了得到它我使用我粘贴在下面的func应用程序,但是, willEnterForeground函数在应用程序函数之前运行,我将在获取url之前运行我想要的方法。有没有办法我可以以某种方式在之前调用urEnForeground函数的url?

AppDelegate.swift

func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool {
    myUrl = url.path

    return true
}

ViewController.swift

override func viewDidLoad() {
    NSNotificationCenter.defaultCenter().addObserver(self, selector: "willEnterForeground:", name: UIApplicationWillEnterForegroundNotification, object: nil)     
}


deinit {
    NSNotificationCenter.defaultCenter().removeObserver(self, name: nil, object: nil)
}

func willEnterForeground(notification: NSNotification!) {

    methodUsingUrl()
}

1 个答案:

答案 0 :(得分:0)

你的AppDelegate.swift应该有一个applicationDidBecomeActive()方法。根据苹果的文档,

  1. 触发第一个UIApplicationWillEnterForegroundNotification通知
  2. 其次,AppDelegate:applicationDidEnterForeGroundNotification被称为
  3. 第三,AppDelegate:applicationDidBecomeActiveGetsCalled方法被称为
  4. 第四,触发UIApplicationDidBecomeActiveNotification通知
  5. 因此,对于您的场景,将URL收集在AppDelegate中是有意义的:applicationDidEnterForeGroundNotification(或)AppDelegate:applicationDidBecomeActiveGetsCalled并让您的ViewController.swift收听UIApplicationDidBecomeActiveNotification