2016-06-25 46 views
1

我想在基於UINavigationController的應用程序上恢復我的動畫。 在viewWillAppear我做了以下內容:UINavigationController UIApplicationDidBecomeActiveNotification後的奇怪行爲

override func viewWillAppear(animated: Bool) { 
     super.viewWillAppear(animated) 
     self.animateButtons() 
    } 

我還添加了這些:

NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(addAnimation), name: UIApplicationDidBecomeActiveNotification, object: nil) 

NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(restorePosition), name: UIApplicationDidEnterBackgroundNotification, object: nil) 

這是我的開始/恢復動畫:

func addAnimation() { 
     self.animateButtons() 
    } 

    func restorePosition() { 
     self.restoreToOriginalPosition() 
    } 

於是解釋:當控制器被加載我創建我的按鈕self.makeRoundQButtons在我的viewDidLoad。然後我在viewWillAppear中生成動畫。

然後進入後臺時我恢復原來的位置self.restoreToOriginalPosition()我又它們的動畫曾經活躍func addAnimation() {...} ...

現在能正常工作的「積極」的看法。當我在導航樹上「鑽取」時,輸入背景並重新激活,並使用「後退」按鈕導航到任何「前一個」視圖,但調用viewWillAppear時不會發生任何動畫。如果我前進,然後再回來一切正常......

我做錯了什麼?

回答

1

好的如果有人想知道...問題是我沒有刪除observerviewDidDissapear並且所有的動畫都是一次完成的,因爲所有的控制器都在導航堆棧中!