я в настоящее время экземпляр раскадровки программным образом:Как найти visibleViewController в appdelegate?
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) вызвать локальный notificaiton или B) обновить представление, если push-уведомление соответствует видимый вид.
Используя различные другие 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. Является ли это лучшим методом для обработки push-уведомлений?
спасибо за ответы! Я собираюсь отредактировать свой пост, но мне было любопытно, когда приложение находится на переднем плане. Как обновить пользовательский интерфейс/определить, какой вид я просматриваю, чтобы правильно обновить интерфейс? – Jay
@Jay Вы можете обновить свой пользовательский интерфейс с помощью 'NSNotificationCenter' –
Вы правы, я не проводил исследования правильно. Вопрос, который я должен был задать, - это лучший способ получить доступ к информации, которая будет обновлять пользовательский интерфейс? В didReceiveRemoteNotification, как передать userInfo наблюдателю? – Jay