快速基础知识中的个性测验指导应用程序

Posted

技术标签:

【中文标题】快速基础知识中的个性测验指导应用程序【英文标题】:PersonalityQuiz guided app in swift fundamentals 【发布时间】:2021-02-05 19:08:33 【问题描述】:

我遇到了一些额外的挑战。我需要通过某个属性过滤一个 Question 类型的数组,然后通过 segue 将其传递给下一个 View Controller。我已经这样做了:

  override func prepare(for segue: UIStoryboardSegue, sender: Any?) 
    guard let sender = sender as? UIButton else return
    if sender == quiz3Button 
        let vc = segue.destination as? QuestionViewController
        vc?.correctQuestions = questions.filter  question in
        return question.quiz == .animals
        
     else if sender == quiz4Button 
        let vc = segue.destination as? QuestionViewController
        vc?.correctQuestions = questions.filter  question in
        return question.quiz == .cars
        
    


@IBAction func quiz3ButtonTapped(_ sender: UIButton) 
    performSegue(withIdentifier: "animals", sender: sender)


@IBAction func quiz4Button(_ sender: UIButton) 
    performSegue(withIdentifier: "cars", sender: sender)

过滤有效,但不会将值传递给下一个视图控制器。我像这样在 QuestionViewControler 中声明了变量

var correctQuestions: [Question] = []

但是当我需要访问它时,我收到错误“索引超出范围”。所以我认为它是空的..

从按钮到 VC 的 Segues

【问题讨论】:

prepare(for:sender:) 函数的开头设置断点,然后单步执行。有很多事情可能会出错,以防止将值传递到目的地。如果不运行您的应用,我们无法判断发生了什么。 是的,没有。我无法从我的工作机器上下载它,我建议做一些事情来调试你的应用程序。 好的,我已经尝试过了。我在 2 个 VC 之间有一个导航控制器。我删除了它,它工作得很好。但我需要介于两者之间的导航控制器。那么关于如何使它工作的任何想法? 【参考方案1】:

好的。我懂了。 NavigationController 是这里的问题。通过NC添加到功能推送中并且它起作用了;)我认为如此关闭

   override func prepare(for segue: UIStoryboardSegue, sender: Any?) 
    guard let sender = sender as? UIButton else return
    if sender == quiz3Button 
        let destinationViewController = segue.destination as? UINavigationController
        let questionViewController = destinationViewController?.viewControllers.first as! QuestionViewController
        questionViewController.correctQuestions = questions.filter  questions in
        return questions.quiz == .animals
        
     else if sender == quiz4Button 
        let destinationViewController = segue.destination as? UINavigationController
        let questionViewController = destinationViewController?.viewControllers.first as! QuestionViewController
        questionViewController.correctQuestions = questions.filter  questions in
        return questions.quiz == .cars
        
    

【讨论】:

您的按钮 segue 调用导航控制器内部的视图控制器?您没有提供足够的信息让您的读者知道这一点。 当您寻求帮助解决问题时,提供大量上下文是值得的。

以上是关于快速基础知识中的个性测验指导应用程序的主要内容,如果未能解决你的问题,请参考以下文章

微指令与微程序测验题

Flutter 项目开发指导 从基础入门到精通使用目录

计算机组成原理考试复习——微程序控制器原理测验题

扇贝 : 应用 TensorFlow 实现深度知识追踪

计算机系统基础:程序的表示转换与链接(第八周小测验)

计算机系统基础:程序的表示转换与链接(第一周小测验)