2012-07-16 21 views
0

我有一個使用UILocalNotifications的應用程序(雖然問題也與PushNotifications有關)。當用戶收到本地通知時,根據應用程序的狀態以及他們在通知警報中做出的選擇,我想呈現一個特定的viewController。問題是他們目前可能通過segue或模態ViewController處於「推送」viewController中,而我目前沒有跟蹤用戶在可能分支內的位置。處理UILocalNotifications的設計模式(如何知道用戶在分支應用程序中的位置)

我想知道是否有任何形式的設計模式或標準方式來處理這樣的混合演示模式應用程序?特別是如果有任何內置的方式來確定哪些是主動ViewController(s)而無需設置麪包屑系統。這很重要,例如,如果用戶已經查看了作爲localNotification結果調用的viewController。

我意識到我的需要/解釋有點混亂。如果有人需要更多信息,我會編輯並更新此內容。

回答

0

行 - 我認爲有通過蘋果文檔View Controller Programming Guide for iOS: Presenting View Controllers from Other View Controllers

在呈現視圖控制器的一個鏈中的每個視圖控制器具有 指針鏈中的周圍的其它物體的溶液。在其他 單詞中,呈現的視圖控制器呈現另一視圖控制器在它的呈現控制器和呈現視圖控制器屬性中均具有有效對象。您可以使用這些關係 根據需要跟蹤視圖控制器鏈。例如, 如果用戶取消當前操作,則可以通過關閉第一個顯示的視圖控制器來刪除鏈中的所有對象 。換句話說,關閉視圖控制器不僅解除了視圖控制器,而且解除了它提供的任何視圖控制器。

所以我可以通過關閉鏈中的第一個模式viewController來取消任何模式viewControllers鏈。

我能確定是否有當前一個模式的viewController使用被提出:

self.window.rootViewController.presentedViewController 

如果屬性爲null,則沒有任何模式的viewController目前正在呈現。爲了完整性(hackishness ..)我可以測試的是presentViewController有一個presentsViewController等:

self.window.rootViewController.presentedViewController.presentedViewController 
相關問題