从handleActionWithIdentifier中选择UINotification显示特定的viewController

时间:2015-07-23 14:03:49

标签: ios xcode swift uiviewcontroller notifications

我是iOS编程的新手,我现在只能理解快速的语言。对于我的应用,我设置了用户,本地和远程通知。本地通知有2个动作,1个用于解除,另一个用于将用户定向到特定的viewController。

我想要显示的特定viewController的viewController层次结构是tabBarController - > (第二个标签)tableViewController - > (众多tablecells之一)viewController

在Richard的建议之后,我用上面的层次结构简化了我的代码。我已经对服务器执行了后台提取以响应远程推送通知,并在创建本地通知之前在本地保存内容以通知用户。我已设法设置到我使用self.window?.rootViewController.selectedIndex = 1在App委托中的application:handleActionWithIdentifier引导用户到tabViewController上的正确选项卡的位置。

如果本地通知包含可以使用的索引,我该如何继续选择正确的表格?

编辑: 经过一些修补,我设法得到了我想要显示的viewController。

if var tabb = self.window?.rootViewController as? UITabBarController {
       tabb.selectedIndex = 1
       var controllers = tabb.childViewControllers
       for controller in controllers {
           if let navcon = controller as? UINavigationController {
                    if let tblvc = navcon.childViewControllers.first as? QuestionnaireTableViewController {
                        tblvc.becomeFirstResponder()
                        tblvc.moveUserToQuestionnaire(questionID)
                    }
                }

            }
        }


func moveUserToQuestionnaire(questionID : String) {
    var list = questionnaireObj.getQuestionnaireListData()
    for item in list {
        var selected = item["questionnaire_id"] as! NSString as String
        if selected == questionID {
            selectedUserID = item["study_id"] as! String
            selectedReplyBatchID = item["reply_batch_id"] as! NSNumber
            selectedQuestionnaireID = questionID
            performSegueWithIdentifier("SelectQuestionnaire",sender:self)
            break
        }
    }
}

如果这是一种正确的使用方法,请通知我。谢谢!希望它也能在这个过程中帮助某人。 =)

0 个答案:

没有答案