1
我目前實例故事板編程就像這樣:如何在appdelegate中找到visibleViewController?
var iphone35StoryBoard:UIStoryboard = UIStoryboard(name: "iphone35", bundle: nil)
var initialViewController:UIViewController = iphone35StoryBoard.instantiateInitialViewController() as! UIViewController
self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
self.window?.rootViewController = initialViewController
self.window?.makeKeyAndVisible()
這是我第一次與推送通知的工作,所以我不確定的最佳實踐,但我想要做的是在didReceiveRemoteNotification和當應用程序處於活動狀態(前景)時,我希望能夠確定用戶當前正在查看哪個視圖以確定我是否應該A)調用本地通知或B)如果推送通知對應於可見的視圖。
使用各種其它SO相關的問題,我曾嘗試使用這些代碼的變化來訪問visibleviewcontroller:
let navigationController = application.windows[0].rootViewController as! UINavigationController
1)
let visibleController: AnyObject? = navigationController.visibleViewController
if visibleController is ProfileViewController {
println("this works")
}
和
2)
let viewControllers: [UIViewController] = navigationController.viewControllers as! [UIViewController]
for vc in viewControllers {
if vc is ProfileViewController {
println("this works")
}
}
3)
if let wd = self.window {
var vc = wd.rootViewController
if(vc is UINavigationController){
vc = (vc as UINavigationController).visibleViewController
}
if(vc is ProfileViewController){
println("this works")
}
}
我運行到的問題是,我只能獲得RootViewController的,從不可見視圖控制器。在這種情況下,rootviewcontroller是一個登錄屏幕,儘管我在profileViewController上,但我只能獲得loginviewcontroller。這是處理推送通知的最佳方法嗎?
感謝你回答!我要編輯我的帖子,但我很好奇的是應用程序在前臺。如何更新用戶界面/確定我在哪個視圖以正確更新用戶界面? – Jay
@Jay你可以使用'NSNotificationCenter'來更新你的UI –
你是對的,我沒有做好我的研究。我應該問的問題是,訪問將更新UI的信息的最佳方式是什麼?在didReceiveRemoteNotification中,如何將userInfo傳遞給觀察者? – Jay