iOS App 從背景回到前景時呼叫 ViewController

一般來說當 App 從背景回到前景的時候,會在 AppDelegate.m 呼叫
-(void)applicationDidBecomeActive:(UIApplication *)application
這行來通知 App 回到前景,可以做些相對應的動作,例如,如果有接 Facebook Login,此時會呼叫
[FBAppEvents activateApp];
來通知 Facebook SDK 說使用者已經完成(或取消)登入。

但是這無法通知某個正在前景的 ViewController 做些相對應的動作,透過 AppDelegate 加上一些複雜的程式可以辦到,不過另一個更簡單的方式是監聽 NSNotificationCenter 的 UIApplicationDidBecomeActiveNotification 事件:

[[NSNotificationCenter defaultCenter]addObserver:self
selector:@selector(viewDidBecomeActive)
name:UIApplicationDidBecomeActiveNotification
object:nil];

當收到 UIApplicationDidBecomeActiveNotification 事件時,呼叫自訂的 viewDidBecomeActive 函式,就可以收到 App resume 的通知,進行相對應的動作了!

升級到 Xcode 6 後,專案無法再以 Xcode 5 編譯的問題

一般來說專案就算用 Xcode 6 開啟過,仍然可以回去用 Xcode 5 開啟編譯,但是一旦開始大量使用 Constraints 之後,會發現專案可能無法再以 Xcode 5.x 編譯,錯誤訊息為:

「The document “XXX” requires Xcode 6.0 or later.」以及「This version does not support constraints to layout margins. Open this document with Xcode 6.0 or later.」

The document requires Xcode 6.0 or later